Ayuda con este programa en java Programación orientada a objetos

Crea una clase, de nombre Examen, para
guardar información sobre los exámenes de
un centro educativo. La información que se
guarda de un examen es: el nombre de la
asignatura, el aula, la fecha y la hora. Para
guardar la fecha y la hora hay que realizar
dos clases, Fecha y Hora.

Escriba una aplicación que cree un objeto de
tipo Examen, lo muestre por pantalla,
modifique su fecha y hora y lo vuelva a
mostrar por pantalla.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Espero ansioso el código que

Espero ansioso el código que describe la funcionalidad de tu requerimiento =)

Estaría bien que en las

Estaría bien que en las escuelas les dieran programas completos donde el alumno solo tuviera que implementar una interfaz dada en vez de que les pidan hacer todo el menu para pedir datos y eso.

En fin.

Imagen de ezamudio

buena idea Oscar

No estaría mal, que recibas un proyecto que el prof ya comenzó, al que le tienes que completar algo. Mucho más realista y así aprendes más. Aprender a leer código ajeno, y a modificar un proyecto donde ya existe código, no algo que empiezas tú desde cero. Habrá quien sea muy cuidadoso de no tocar nada y sólo agregar código, y quienes se pongan a moverle para ver qué se descompone y cómo; y hasta quien se aviente a optimizar algo.

Si el prof diseña bien ese código, puede hacer que corra bien pero que haya espacio para optimizarlo y revisar en las entregas si alguien se tomó la molestia de modificarlo y qué cambios hizo.

La clase Fecha

package EXAMFINAL2;

public class Fecha {
        private String dia;
        private String  mes;
        private  String año;
       

        public String getDia() {
                return dia;
        }

        public void setDia(String dia) {
                this.dia = dia;
        }

        public String getMes() {
                return mes;
        }

        public void setMes(String mes) {
                this.mes = mes;
        }

        public String getAño() {
                return año;
        }

        public void setAño(String año) {
                this.año = año;
        }

       
        Fecha(String dia,String mes , String año){
        this.dia=dia;
        this.mes=mes;
        this.año=año;
       
        }
       

public String toString(String Fecha) {
                return dia+mes+año;
               
}}

La clase Hora

package EXAMFINAL2;

public class Hora {

private  String hora;
private  String minuto;

public String getHora() {
        return hora;
}
public void setHora(String hora) {
        this.hora = hora;
}
public String getMinuto() {
        return minuto;
}
public void setMinuto(String minuto) {
        this.minuto = minuto;
}

Hora(String hora,String minuto){
        this.hora=hora;
        this.minuto=minuto;
}

public  String toString (String Hora){
        return hora+minuto;

}
}

La clase aplicacion

package EXAMFINAL2;

import java.util.Scanner;

public class Aplicacion {
       
        public static void main(String[] args) {
               
                        Scanner teclado=new Scanner (System.in);
       
                        Fecha f=new Fecha("miercoles",  "diciembre", "2012");
                        Hora h= new Hora("5 pm:","15 minutos" );
                        System.out.println(f.getDia());
                        System.out.println(f.getMes());
                        System.out.println(f.getAño());
                        System.out.println(h.getHora());
                        System.out.println(h.getMinuto());
                       
                        System.out.println("Nueva fecha:");
                        String Modificarfecha=teclado.next();
                        System.out.println("La fecha ha sido modificada:"+Modificarfecha);
                       
                        System.out.println("Ingrese la nueva hora:");
            String ModificarHora=teclado.next();
                        System.out.println("La hora ha sido modificada:"+ModificarHora);
           
               

        }

}

Me gustaria saber como:

Me gustaria saber como puedo modificar la Clase Fecha, la cual contiene DIA MES Y AÑO EJEMPLO: DICIEMBRE 12 2012 A ENERO 10 2013
Modificarla desde la clase fecha, y que pueda imprimir desde la clase aplicacion.. que es la clase donde mandare a imprimir.

@jysisxtreme para modificar

@jysisxtreme para modificar la clase fecha tienes que invocar los métodos setDia, setMes y setAño

Los valores que deben de ir ahí son los que leas, suponiendo que ya los tienes en variables de tipo String podría ser algo como:

String modificarfecha=teclado.next();
// ... magia aquí
...
f.setDía( nuevoDiaLeído );
f.setMes( nuevoMesLeido );
f.setAño( nuevoAñoLeído );
....
System.out.println("La fecha ha sido modificada:"+Modificarfecha);

Para la hora es muy parecido

OscarRyz ME Podrias dar tu codigo completo,

Hola OscarRys ya agrege tu codigo a mi programa en java, todo bien, pero no puedo hacerlo ordenadamente, tengo que imprimir de un jalon,ejemplo

YO imprimo de la siguiente forma:
INGRESE LA NUEVA FECHA:
JUEVES DICIEMBRE 2013

LA FECHA HA SIDO MODIFICADA: JUEVES DICIEMBRE 2013

y lo que a mi me gustaría es imprimirlo de esta forma
Esta es la forma correcta de correr el programa

INGRESE LA NUEVA FECHA:

INGRESE NUEVO DIA: JUEVES
INGRESE NUEVO MES: DICIEMBRE
INGRESE NUEVO AÑO: 2013

LA FECHA HA SIDO MODIFICADA: JUEVES DICIEMBRE 2013

en donde dica magia aqui... no se que es lo que lleva

porfavor me gustaria que me pusieras tu codigo completo solo me falta eso: gracias

// ... magia aquí
...

Imagen de Jose Manuel

La magia :)

Es como te dijo Oscar, cuando creas tu objeto Fecha y le pasas los parámetros la fecha que contiene es la que le diste en ese momento, para mostrarla debes llamar a toString() Que por cierto, debes quitar el parámetro para que se sobrescriba el método. Pero si no quieres pasar ningún parámetro durante la construcción del objeto lo que debes hacer es una sobre carga del constructor, tan simple como esto:

public Fecha() {
}

Y ahora si, cuando hagas esto:

Scanner scan = new Scanner(System.in);
       
        Fecha  f = new Fecha();
        System.out.println("Dia:");
        String d = scan.next();
       
        System.out.println("Mes:");
        String m = scan.next();
       
        System.out.println("Año:");
        String a = scan.next();
       
        f.setAño(a);
        f.setDia(d);
        f.setMes(m);
       
        System.out.println("La fecha ha sido modificada:" +f.toString());

Tendrás lo que pides.

Imagen de Cid

jeje magia me gusta el termino jajaja

Desde luego no te lo pone porque quiere que le pongas algo de ganas y empeño

te dejo un ejemplo y lo aplicas a tu problema ok aunque ya Jose Manuel te coloco la magia:

Aqui trato de ejemplificar que tienes una clase Mascota de la cual deseas cambiar el estado del objeto (la variable de instancia nombre), desde una clase ajena (PruebaMascota).

public class Mascota {
       //solo pongo una variable de instancia para no hacer tan grande el ejemplo pero puede tener mas ok
       private String nombre;
 
       public Mascota(String nombre) {
            this.nombre = nombre;
       }

       public void setNombre (int nombre)  {
            this.nombre = nombre;
       }

       public String getNombre()  {
           return nombre;
       }
}

import java.util.Scanner;

public class PruebaMascota {
       public static void main(String args []) {
            Mascota m = new Mascota("Max");
            System.out.println("El nombre original de mascota: " +  m.getNombre());        
            System.out.println("Introduce el nuevo nombre de la mascota");
            Scanner leer = new Scanner(System.in);      
            String nuevoNombre = leer.next();          
            //Aqui es donde cambiamos el estado del objeto m
            m.setNombre(nuevoNombre);
            System.out.println("El nombre modificado es: " +  m.getNombre());                    
       }
}

Gracias a todos por su ayuda

el programa ya quedo listo solo falta que me imprima bien la clase hora, ahi le modifico. si hay alguna duda yo les aviso, gracias

Buuuhh ya revelaron la magia,

Buuuhh ya revelaron la magía, y toda magia cuando es revelada pierde su chiste.

... si hay alguna duda yo les aviso... Jejeje oooookeeeey!!! :D

Saludos

Todo bien pero no imprime los nuevos datos de clase hora

public class Hora {

private String hora;
private String minuto;

public String getHora() {
return hora;
}
public void setHora(String hora) {
this.hora = hora;
}
public String getMinuto() {
return minuto;
}
public void setMinuto(String minuto) {
this.minuto = minuto;
}

Hora(String hora,String minuto){
this.hora=hora;
this.minuto=minuto;
}

public String toString (String Hora){
return hora+minuto;

}
}

clase Fecha

public class Fecha {
private String dia;
private String mes;
private String año;

public String getDia() {
return dia;
}

public void setDia(String dia) {
this.dia = dia;
}

public String getMes() {
return mes;
}

public void setMes(String mes) {
this.mes = mes;
}

public String getAño() {
return año;
}

public void setAño(String año) {
this.año = año;
}

Fecha(String dia,String mes , String año){
this.dia=dia;
this.mes=mes;
this.año=año;

}

public String toString() {
return dia+mes+año;

}}

Clase aplicacion aqui esta el problema eso creo

import java.util.Scanner;

public class Aplicacion {

public static void main(String[] args) {

Scanner teclado = new Scanner (System.in);

Fecha f=new Fecha("miercoles", "diciembre", "2012");
Hora h= new Hora("5pm","15 minutos" );
System.out.println(f.getDia());
System.out.println(f.getMes());
System.out.println(f.getAño());
System.out.println(h.getHora());
System.out.println(h.getMinuto());

Scanner scan = new Scanner(System.in);
System.out.println("ingrese la nueve fecha:");

System.out.println("Dia:");
String d = scan.next();

System.out.println("Mes:");
String m = scan.next();

System.out.println("Año:");
String a = scan.next();

f.setAño(a);
f.setDia(d);
f.setMes(m);
System.out.println("La fecha ha sido modificada:" +f.toString());

System.out.println("Ingrese la nueva hora:");

System.out.println("Hora:");
String hora= scan.next();

System.out.println("Minuto:");
String minutos= scan.next ();

h.setHora(hora);
h.setMinuto(minutos);

System.out.println("La hora ha sido modificada:"+h.toString());
}

}

Si pudieran correr el programa para que me digan

si pudieran correr el programa para que me digan cual es el error en
esto:

System.out.println("Ingrese la nueva hora:");
System.out.println("Hora:");
String hora= scan.next();
System.out.println("Minuto:");
String minutos= scan.next ();
h.setHora(hora);
h.setMinuto(minutos);
System.out.println("La hora ha sido modificada:"+h.toString());

Ingrese la nueva hora:
Hora:
3pm
Minuto:
4minutos
La hora ha sido modificada:EXAMFINAL2.Hora@78a212 :ESTE ES EL ERROR QUE ME IMPRIME

Listo gracias

Lo unico que modifique fue lo siguiente
public String toString (String Hora){
return hora+minuto;

ahora bien, le cambia lo siguiente
public String toString (){
return hora+minuto;

elimine el String Hora y listo ese era el problema

Y lo mejor es que lo hiciste

Y lo mejor es que lo hiciste solo y en menos de una hora.

:)

Cuano pegues código acá incluyelo en los tags: <code> y </code> ejemplo

<code>
public class Ejemplo {
}
</ code>
Imagen de Jose Manuel

Hay que leer.

Es que no leíste lo que te escribí D: ya te había explicado sobre eso... pero al menos ya solucionaste el problema ;)

Al programa le falta .....

Hola hola a todos, hoy regresando a la escuela, pues que la profe me revisa el trabajo y me dijo lo siguiente
El programa en java tiene que tener la siguiente característica
HACER QUE EL PROGRAMA IDENTIFIQUE LOS MESES DE ENERO A DICIEMBRE
IGUAL TENER EN CUENTA LAS 24 HRS Y 60 MINUTOS

Eso ya de plano es purra carrilla pero si me pueden ayudar con esos aspectos gracias

el programa tiene que saber cuantos minutos son osea 60.... no mas--- yo puedo agregar 45 o 30 etc. pero no mas de 60
respetando la realidad

igual los meses y los años
en los meses Hasta diciembre y los años hasta 2015 un ejemplo viernes enero 2015

Imagen de Jose Manuel

Take it easy :P

Tomate tu tiempo, respira hondo y relajate, después, explicas de manera clara y concisa cual es tu problema. ¿Que dudas tienes? De manera especifica.

Utiliza los tips para formatear el texto y que sea agradable a la vista de tus posibles lectores. Saludos.

Continuacion del programa

Hola, bueno lo que me gustaría saber es como hacer o cual es el código necesario para saber la hora exacta, no puede poner 70 minutos por que enrealidad no se podria ya que solo se admite hasta 60 minutos, y cual para la Hora: 5 o 19 horas. en la clase Fecha
, creo y tengo entendido que tendre que usar un If ( ......... );

hacer que el programa sepa las horas que son 24hrs y los minutos..que llegan hasta (60 minutos)

Tambien me encargaron, que modificara el trabajo :
Crea una clase, de nombre Examen, para
guardar información sobre los exámenes de
un centro educativo. La información que se
guarda de un examen es: el nombre de la
asignatura, el aula, la fecha y la hora.

Tengo la clase examen pero no se como guardar o almacenar informacion sobre otras clases por ejemplo de la Clase Fecha
tengo que guardar EL DIA MES Y AÑO que ya esten asignados para yo poder modificarlos lo mismo con la clase Hora tenerlos ya asignados o definidos en la Clase Examen para poder modificarlos

Imagen de Cid

Bueno que la magia tambien se acaba jejeje

Tengo una idea porque no te planteas resolver el problema podrias empezar por verificar el planteamiento del problema creo que lo tienes claro, es que vas a resolver: leer la hora y validarla, la validacion dice que la hora debera estar en los limites de entre 0 y 24 horas, los minutos entre 0 y 60.

Ahora los pasos a seguir:

1.- Pedirle al usuario el dato de la hora y minutos ( Esto con Scanner creo que ya no tienes problemas checate el metodo nextInt() ).
2.- Valida que ese dato que lees con Scanner se encuentre dentro del rango para la hora y minutos

Te dejo un fragmento de còdigo que te puede servir y lo aplicas igual para los minutos ok

import java.util.*;

public class LeerHora
{
        public static void main(String [] args)
        {
            int hora;
            Scanner leer = new Scanner(System.in);
            LeerHora obj = new LeerHora();
            try
            {    
                hora = leer.nextInt();
                /*Podrias poner un while que si no es hora valida la vuelva a pedir
                   ese tipo de truco magico espero si sepas hacerlo.  */

                System.out.println("Hora valida: " + obj.validarHora(hora));
            }catch(InputMismatchException ime)
            {  
                System.err.println("El formato de la hora es entero y usted introdujo algo que no lo es");
            }
        }
       
        // tu metodo para validar la hora
        public boolean validarHora(int hora)
        {
            boolean valida = false;
           
            if( (hora >= 0) && (hora < 24) )
            {
               valida = true;            
            }  
            return valida;
        }        
               
}

Me podrias dar el codigo completo me surgieron mas dudas gracias

Me podrias dar tu codigo completo quiero ver si se puede solucionar el problema que tengo con mi programa a ver si imprime bien.

Imagen de Cid

Esta completo para validar hora

Esta completo para validar hora, bueno creo que me falto mandar el mensaje para pedir la hora, solo tendrias que agregar esto en el justo despues del try:

 
System.out.println( "Introduzca la hora: ");

Para validar el mes podrias utilizar ifs encadenados o un if con varias condiciones OR (tambien podrias usar tipos enumerados pero no creo que sea tema para abordar y no creo que te lo pidan así), bueno te dejo otra pista de codigo para validar mes

 
public boolean validarMes(String mes)
    {
        boolean valido =  false;
        //Aqui solo valido tres meses lo demas ya te lo debes imaginar es copiar y cambiar el valor del argumento que recibe equals
        if(mes.toLowerCase().equals("enero") || mes.toLowerCase().equals("febrero") || mes.toLowerCase().equals("marzo") )
        {
            valido = true;
        }  
               
        return valido;
    }

Si utilizas el JDK 7 puedes usar un switch asi:

 
public boolean validarMes(String mes)
    {
        boolean valido =  false;
       
        switch(mes.toLowerCase())
        {
            case "enero":
            case "febrero":
            case "marzo":
            //asi sucesivamente hasta diciembre
            valido=true;              
           break; // Este break es opcional pero siempre me gusta ponerlo.
        }
        return valido;
    }

Nota: Si no utilizas JDK 7 esta última versión para validar el mes no será valida pues switch solo aceptaba char, int, short y byte, pero no String.

Igual no me imprime el mes donde...

Disculpa. oye cual de los dos codigos es el correcto, o igual puedo usar los 2, perdon mi pregunta pero como le ago para imprimir el mes...
hace mucho vi este tema Switch y Case pero lo ocupo estudiar...

Disculpa pero me podrias decir donde

En donde coloco el System.out.print para imprimir en la clase de ValidarMes
hace mucho estuve en la clase de fundamentos de programacion pero no recuerdo muy bien todo esto si fueras tan amable gracias

Imagen de Cid

Ese fragmento no imprime el mes

No para nada ese fragmento no imprime el mes ese lo unico que hace es validar si el mes esta entre enero y marzo.. Para validar el mes puedes usar los dos si tienes JDK 7 si tienes JDK 6 o inferior solo el primer código es valido. En cuanto a imprimir el mes pues podrias poner algo así dentro de la clase:

public static void main(String args [])
    {
        String mes=" ";
        Scanner leer = new Scanner(System.in);
        System.out.println("Introduzca el mes: ");
        String mesValidar = leer.next();        
        if(validarMes(mesValidar))
        {
            mes=mesValidar;
            System.out.println("Mes: " + mes);
        }
        else
        {
            System.out.println("Mes invalido");
        }
       
    }

public boolean validarMes(String mes)
    {
        boolean valido =  false;
        //Aqui solo valido tres meses lo demas ya te lo debes imaginar es copiar y cambiar el valor del argumento que recibe equals
        if(mes.toLowerCase().equals("enero") || mes.toLowerCase().equals("febrero") || mes.toLowerCase().equals("marzo") )
        {
            valido = true;
        }  
               
        return valido;
    }

Necesito asignarle la hora y fecha a Examen porfa ayuda

public class Hora {
private int hora;
private int minuto;

public Hora(int hora, int minuto) {
this.hora = hora;
this.minuto = minuto;
if (hora < 0 || hora > 24 || minuto < 0 || minuto > 60) {
System.out.println("Hora no reconocida");

}
}

public int getHora() {
return hora;
}

public void setHora(int hora) {
this.hora = hora;
}

public int getMinuto() {
return minuto;
}

public void setMinuto(int minuto) {
this.minuto = minuto;
}

@Override
public String toString() {
return hora + "con:" + minuto +"minutos";

}
}

Clase Fecha

public class Fecha {
private int dia;
private int mes;
private int año;

public Fecha(int dia, int mes, int año) {
this.dia = dia;
this.mes = mes;
this.año = año;
if (dia < 0 || dia > 30 || mes < 0 || mes > 12 || año < 0 || año > 2012) {
System.out.println("Fecha no existente");
}
}

public int getDia() {
return dia;
}

public void setDia(int dia) {
this.dia = dia;
}

public int getMes() {
return mes;
}

public void setMes(int mes) {
this.mes = mes;
}

public int getAño() {
return año;
}

public void setAño(int año) {
this.año = año;
}
@Override
public String toString() {
return dia + "/" + mes + "/" + año;

}
}

Clase Examen

public class Examen {

private String examen;
private int aula;
private Fecha fecha;
private Hora hora;

public Examen(String examen, int aula) {
this.examen = examen;
this.aula = aula;

}

public String getExamen() {
return examen;
}

public void setExamen(String examen) {
this.examen = examen;
}

public int getAula() {
return aula;
}

public void setAula(int aula) {
this.aula = aula;
}

public String toString(){
return examen+"/"+aula;
}

}

Clase aplicacion

import java.util.Scanner;

public class Aplicacion {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

Hora h = new Hora(12, 30);
System.out.println(h.toString());

Fecha f= new Fecha(14, 06, 90);
System.out.println(f.toString());

Examen e1=new Examen("asignatura :mate",100);
System.out.println(e1.toString());

System.out.println("ingrese la nueve fecha:");
System.out.println("Dia");

int d = teclado.nextInt();

System.out.println("Mes:");
int m = teclado.nextInt();

System.out.println("Año:");
int a = teclado.nextInt();

f.setDia(d);
f.setMes(m);
f.setAño(a) ;
System.out.println("La fecha ha sido modificada:" + f.toString());

System.out.println("Introduce la nueva hora:");

System.out.println("Hora:"); int n = teclado.nextInt();

System.out.println("Minutos:"); int t = teclado.nextInt();

h.setHora(n); h.setMinuto(t);
System.out.println("La hora ha sido modificada:" + h.toString()); }

}

Necesito modificar algunas cosas ayuda

El programa imprime de la siguiente manera,,

asignatura :mate/aula:2
12:30
14/6/90
ingrese la nueve fecha:
Dia
4
Mes:
8
Año:
12
La fecha ha sido modificada:4/8/12 (ESTE ES EL ERROR QUE LA PROFE ME INDICA )
Introduce la nueva hora:
Hora:
3
Minutos:
4
La hora ha sido modificada:3:4 (ESTE ES EL ERROR QUE LA PROFE ME INDICA

Primeramente necesito que me imprima de la siguiente manera
asignatura :mate/aula:2
12:30
14/6/90
ingrese la nueve fecha:
Dia
4
Mes:
8
Año:
12
La fecha ha sido modificada:
asignatura :mate/aula:2
12:30
4/8/12 (COMO VEN ASI TIENE QUE IMPRIMIR, AL ESTABLECER DÍA MES Y AÑO)

LO MISMO PASA CON LA HORA TIENE QUE IMPRIMIR DE IGUAL FORMA

Introduce la nueva hora:
Hora:
3
Minutos:
4

La hora ha sido modificada:
asignatura :mate/aula:2
3:4 (LO MISMO TENDRA QUE IMPRIMIR AQUI)
14/6/90

Les dejo las clases modificadas aver si me pueden ayudar

Clase hora

import java.util.Scanner;

public class Hora {
private int hora;
private int minuto;

public void setHora(int hora) {
this.hora = hora;
}

public int getMinuto() {
return minuto;
}

public void setMinuto(int minuto) {
this.minuto = minuto;
}

public Hora(int hora, int minuto) {
this.hora = hora;
this.minuto = minuto;
if (hora < 0 || hora > 24 || minuto < 0 || minuto > 60) {
System.out.println("Hora no reconocida"); }

}

public int getHora() {
return hora;
}
@Override
public String toString() {
return hora + ":" + minuto;

}
}

Clase Fecha

public class Fecha {
private int dia;
private int mes;
private int año;

public Fecha(int dia, int mes, int año) {
this.dia = dia;
this.mes = mes;
this.año = año;
if (dia < 0 || dia > 30 || mes < 0 || mes > 12 || año < 0 || año > 2012) {
System.out.println("Fecha no existente");
}
}

public int getDia() {
return dia;
}

public void setDia(int dia) {
this.dia = dia;
}

public int getMes() {
return mes;
}

public void setMes(int mes) {
this.mes = mes;
}

public int getAño() {
return año;
}

public void setAño(int año) {
this.año = año;
}
@Override
public String toString() {
return dia + "/" + mes + "/" + año;

}
}

Clase Examen

public class Examen {
private String examen;
private int aula;
private Fecha fecha;
private Hora hora;

public Examen(String examen, int aula) {
this.examen = examen;
this.aula = aula;

}

public String getExamen() {
return examen;
}

public void setExamen(String examen) {
this.examen = examen;
}

public int getAula() {
return aula;
}

public void setAula(int aula) {
this.aula = aula;
}

public String toString(){
return examen+"/"+"aula:"+aula;
}

}

Clase Aplicacion

import java.util.Scanner;

public class Aplicacion {

public static void main(String[] args) {

Scanner teclado = new Scanner(System.in);

Examen e1=new Examen("asignatura :mate",2);
System.out.println(e1.toString());

Hora h = new Hora(12, 30);
System.out.println(h.toString());

Fecha f= new Fecha(14, 06, 90);
System.out.println(f.toString());

System.out.println("ingrese la nueve fecha:");

System.out.println("Dia");
int d = teclado.nextInt();

System.out.println("Mes:");
int m = teclado.nextInt();

System.out.println("Año:");
int a = teclado.nextInt();

f.setDia(d);
f.setMes(m);
f.setAño(a) ;
System.out.println("La fecha ha sido modificada:" + f.toString());

System.out.println("Introduce la nueva hora:");

System.out.println("Hora:");
int n = teclado.nextInt();

System.out.println("Minutos:");
int t = teclado.nextInt();

h.setHora(n);
h.setMinuto(t);
System.out.println("La hora ha sido modificada:" + h.toString());
}

}

Tengo dudas de como puedo hacer que me imprima asi:

asignatura :mate/aula:2
12:30
14/6/90
ingrese la nueve fecha:
Dia
4
Mes:
8
Año:
12
La fecha ha sido modificada:4/8/12 (ESTE ES EL ERROR QUE LA PROFE ME INDICA )
Introduce la nueva hora:
Hora:
3
Minutos:
4
La hora ha sido modificada:3:4 (ESTE ES EL ERROR QUE LA PROFE ME INDICA
Primeramente necesito que me imprima de la siguiente manera
asignatura :mate/aula:2
12:30
14/6/90
ingrese la nueve fecha:
Dia
4
Mes:
8
Año:
12
La fecha ha sido modificada:
asignatura :mate/aula:2
12:30
4/8/12 (COMO VEN ASI TIENE QUE IMPRIMIR, AL ESTABLECER DÍA MES Y AÑO)
LO MISMO PASA CON LA HORA TIENE QUE IMPRIMIR DE IGUAL FORMA
Introduce la nueva hora:
Hora:
3
Minutos:
4
La hora ha sido modificada:
asignatura :mate/aula:2
3:4 (LO MISMO TENDRA QUE IMPRIMIR AQUI)
14/6/90

Imagen de Cid

Pss ya nos debes unas tortas minimo jajajaja

Ya nos vas a quedar a deber unas tortas como minimo con un refresco y para los que gustan de las cheves pues cheves jajajaja.

No se si es tu implementacion para resolver tu problema fue la mejor pero solo me adapte a tu código. Según yo esto es lo que querías. Solo modifique la clase Aplicacion y Examen.
import java.util.Scanner;

public class Aplicacion {

    public static void main(String[] args)
    {

        Scanner teclado = new Scanner(System.in);
        /* Creas tu instancia para el examen, hora y fecha,
         * asignas esa hora y fecha a tu examen con los metodos
         * setFecha y setHora (Mutoadores respectivos para fecha y hora).
         */

        Examen e1=new Examen("asignatura: mate ",2);        
        Hora h = new Hora(12, 30);
        e1.setHora(h);
        Fecha f= new Fecha(14, 06, 90);
        e1.setFecha(f);
        // Imprimes el estado del objeto examen
        System.out.println("Examen programado: \n" + e1);

        // Pides la nueva fecha
        System.out.println("ingrese la nueve fecha:");

        System.out.println("Dia");
        int d = teclado.nextInt();

        System.out.println("Mes:");
        int m = teclado.nextInt();

        System.out.println("Año:");
        int a = teclado.nextInt();

        /* Creas la fecha a partir de los datos leidos por medio de
         * los setters (mutadores) para dia mes y año
         */

        f.setDia(d);
        f.setMes(m);
        f.setAño(a);
        // Colocas esta fecha en el objeto del examen con el mutador setFecha
        e1.setFecha(f);
        // Imprimes el estado del objeto del examen ya con los datos actualizados
        System.out.println("La fecha ha sido modificada: \n" + e1);
       
        // Pides la nueva hora
        System.out.println("Introduce la nueva hora:");

        System.out.println("Hora:");
        int n = teclado.nextInt();

        System.out.println("Minutos:");
        int t = teclado.nextInt();
       
        /* Creas la hora a partir de los datos leidos por medio de
         * los setters (mutadores) para hora y minuto
         */

        h.setHora(n);
        h.setMinuto(t);
        // Colocas esta hora en el objeto del examen con el mutador setHora
        e1.setHora(h);
        // Imprimes el estado del objeto del examen ya con los datos actualizados
        System.out.println("La hora ha sido modificada: \n" + e1);

    }

 

public class Examen
{
    private String examen;
    private int aula;
    private Fecha fecha;
    private Hora hora;

    //Metodo accesor para la variable de instancia fecha get
    public Fecha getFecha() {
        return fecha;
    }
 
    //Metodo mutador para la variable de instancia fecha set
    public void setFecha(Fecha fecha) {
        this.fecha = fecha;
    }

    //Metodo accesor para la variable de instancia hora get
    public Hora getHora() {
        return hora;
    }

    //Metodo mutador para la variable de instancia hora set
    public void setHora(Hora hora) {
        this.hora = hora;
    }
   
    public Examen(String examen, int aula)
    {
        this.examen = examen;
        this.aula = aula;
    }

    public String getExamen()
    {
        return examen;
    }

    public void setExamen(String examen)
    {
        this.examen = examen;
    }

    public int getAula()
    {
        return aula;
    }

    public void setAula(int aula)
    {
        this.aula = aula;
    }

    public String toString()
    {
        return examen+"/"+"Aula:"+aula + "\n" + hora + "\n" + fecha ;
    }

}

public class Fecha
{
    private int dia;
    private int mes;
    private int año;

    public Fecha(int dia, int mes, int año)
    {
        this.dia = dia;
        this.mes = mes;
        this.año = año;
        if (dia < 0 || dia > 30 || mes < 0 || mes > 12 || año < 0 || año > 2012)
        {
            System.out.println("Fecha no existente");
        }
    }

    public int getDia()
    {
        return dia;
    }

    public void setDia(int dia)
    {
        this.dia = dia;
    }

    public int getMes()
    {
        return mes;
    }

    public void setMes(int mes)
    {
        this.mes = mes;
    }

    public int getAño()
    {
        return año;
    }

    public void setAño(int año)
    {
        this.año = año;
    }
    @Override
    public String toString()
    {
        return dia + "/" + mes + "/" + año;
    }
}

public class Hora
{
    private int hora;
    private int minuto;

    public void setHora(int hora)
    {
        this.hora = hora;
    }

    public int getMinuto()
    {
        return minuto;
    }

    public void setMinuto(int minuto)
    {
        this.minuto = minuto;
    }

    public Hora(int hora, int minuto)
    {
        this.hora = hora;
        this.minuto = minuto;
        if (hora < 0 || hora > 24 || minuto < 0 || minuto > 60)
        {
            System.out.println("Hora no reconocida");
        }

    }

    public int getHora()
    {
        return hora;
    }
   
    @Override
    public String toString()
    {
        return hora + ":" + minuto;
    }
}

PD: Ahi nos avisas para esas tortas o comida jajajaja, no es cierto.

Solo falta que el programa valide mes y fecha

Por mas que quise e intente no puedo hacer que me valide el mes, ni la fecha
tu codigo me sirvio de mucho pero igual no lo puedo agregar a las clases para imprimir de manera corecta,
en mi programa si te fijaste yo ingreso todos los datos de tipo Int, entonces me gustaria que si ingreso un dia invalido o un mes invalido o un año incorrecto el programa lo imprima.

if (dia < 0 || dia > 30 || mes < 0 || mes > 12 || año < 0 || año > 2012)
{
System.out.println("Fecha no existente"); //NO SE SI EXTE BIEN PORQUE ME AYUDO OTRO COMPAÑERO DE LA ESCUELA PERO PUES NO ME IMPRIME NADA.

lo mismo pasa con la hora,
if (hora < 0 || hora > 24 || minuto < 0 || minuto > 60)
{
System.out.println("Hora no reconocida");

De igual manera necesito que me salga un mensaje de error si ingreso POR EJEMPLO :
No hay problema que no diga ingrese otro dato, igual puede aparecer ya al ultimo FECHA INVALIDA

DIA: LUNES
DATO INVALIDO... INGRESE OTRO DATO
DIA: 1
MES:FEBREO
DATO INVALIDO INGRESE OTRO DATO
MES:2
AÑO:2013
DATO INVALIDO INGRESE OTRO DATO
AÑO13

Los que dicen datos invalidos Es porque solo el programa me pide puro numero osea con int en eso no hay problema
ASI LO mismo al imprimir la Hora

Hora: 5pm
Minuto: 6minutos
HORA INVALIDA

PARECIDO PERO SOLO QUE AL ULTIMO ME DICE QUE TODO ES INVALIDO
CUALQUIERA DE LOS DOS ESTARIA BIEN GRACIAS

Este fue el codigo que tu me regalaste gracias... pero ps no e podido solucionar el problema de lo de validar

import java.util.Scanner;

public class ValidarMes {
public static void main(String[] args) {
{
String mes=" ";
Scanner leer = new Scanner(System.in);
System.out.println("Introduzca el mes: ");
String mesValidar = leer.next();
if(validarMes(mesValidar))
{
mes=mesValidar;
System.out.println("Mes: " + mes);
}
else

System.out.println("Mes invalido");
}

}
public static boolean validarMes(String mes)
{
boolean valido = false;
//Aqui solo valido tres meses lo demas ya te lo debes imaginar es copiar y cambiar el valor del argumento que recibe equals
if(mes.toLowerCase().equals("enero") || mes.toLowerCase().equals("febrero") || mes.toLowerCase().equals("marzo") )
{
valido = true;
}

return valido;

}

}

import java.util.InputMismatchException;
import java.util.Scanner;

public class LeerHora {
public static void main(String[] args) {
int hora;
Scanner teclado = new Scanner(System.in);
LeerHora obj = new LeerHora();
try
{ System.out.println( "Introduzca la hora: ");
hora = teclado.nextInt();
/*Podrias poner un while que si no es hora valida la vuelva a pedir
ese tipo de truco magico espero si sepas hacerlo. */
System.out.println("Hora valida: " + obj.validarHora(hora));
}catch(InputMismatchException ime)
{
System.out.println("El formato de la hora es entero y usted introdujo algo que no lo es");
}
}

// tu metodo para validar la hora
public boolean validarHora(int hora)
{
boolean valida = false;

if( (hora >= 0) && (hora < 24) )
{
valida = true;
}
return valida;
}

}

Imagen de Cid

Ya es noche y tengo que dormr, pero igual te dejo esto

Ya es noche y tengo que dormr, pero igual te dejo esto que te puede servir aqui validas la hora y si te insertan una hora ya sea porque el rango esta mal (mayor a 24 o menor a 0) o porque introdujeron mal el formato (InputMismatchException) de la hora (numeros y letras) te manda el error y te pide que ingreses la hora hasta que esta sea correcta (utilizando recursividad).
import java.util.*;
public class LeerHora
{
        public static void main(String [] args)
        {            
            LeerHora o = new LeerHora();
            o.leerHora();
        }

        /* Metodo para leer la hora si esta es invalida ya sea porque
         * no esta en el rango (0 y 24) o porque ingresaron numero y letras
         * (InputMismatchException) se llama recursivamente hasta tener una hora
         * valida.
         */

        public void leerHora()
        {
            boolean valido = false;
            int hora,leido;
            Scanner leer = new Scanner(System.in);
            LeerHora obj = new LeerHora();

                System.out.println("Ingrese la hora: ");
                try
                {
                    leido = leer.nextInt();
                    if(obj.validarHora(leido))
                    {
                        valido=true;
                        System.out.println("Hora Valida");
                        hora = leido;
                    }else
                    {
                        System.out.println("Hora invalida rango debe ser entre 0 y 24. Intente de nuevo. ");
                        leerHora();
                    }
                }catch(InputMismatchException ime)
                {
                    valido = false;
                    System.out.println("Hora invalida solo inserte numeros enteros. Intente de nuevo. ");
                    leerHora();
                }
        }

        // tu metodo para validar la hora
        public boolean validarHora(int hora)
        {
            boolean valida = false;

            if( (hora >= 0) && (hora < 24) )
            {
               valida = true;
            }
            return valida;
        }

}

Me retiro por hoy. Terminalo, analiza bien todo lo que has visto en los distintos códigos que te mande y trata de armarlo. Te lo podria dar armado pero ya es noche y bueno que se diga que si entendiste y lograste hacer tu programa. Saludos.

Gracias

tratare de terminarlo mañana te digo si esta todo bien gracias

E intentado pero aun sigo en blanco con la fecha y el mes

Para que el programa este bien, necesito incluir en la validacion de la hora
la hora y el minuto.. igual la fecha dia mes y año, e tratado de agregarlo a la clase donde mando a imprimir pero nada no me imprime, si me pudieras hacer el ultimo favor :) gracias, Ayer me dormi a las 3 am..

igual como lo describi arriva
que me aparesca :

DATO INVALIDO INGRESE OTRO DATO ................................ CUANDO INGRESO DATOS COMO PM AM, MINUTOS ETC, Y SIGUE IMPRIMIENDO

de esta manera me gustaria mas ya que la profe creo que es un poco estricta, si puedes mandarme el codigo porfavor te agradeceria mucho..

lo mismo pasaria con la fecha..... dia mes año, SOBRE LOS AÑOS NO HAY PROBLEMA PUEDEN SER MENORES A 2020 ETC YO LE MODIFICARIA AHI GRACIAS

INSERTERTE NUEVO

DIA. LUNES
DATO INVALIDO
DIA 1

MES FEBRERO
DATO INVALIDO
MES 2

AÑO 2013
DATO INVALIDO
AÑO 13
La hora ha sido modificada........RESULTADO (en eso no hay problema )

Imagen de Cid

Ya lo acople mas o menos a lo que quieres

Bueno ya me acerque un poco a lo que quieres pero todavia tiene fallas pues no verifica si es año bisiesto, ni verifica los meses con 31 o 30 dias esos ya te lo dejo de tarea para ti. Pero te dejo una pista para lo de los años bisiestos:

Un año es bisiesto si es divisible entre 4, a menos que sea divisible entre 100. Sin embargo, si un año es divisible entre 100 y además es divisible entre 400, también resulta bisiesto. Obviamente, esto elimina los años finiseculares (últimos de cada siglo, que ha de terminar en 00) divisibles sólo entre 4 y entre 100.

import java.util.*;

public class Aplicacion {

    public static void main(String[] args)
    {

        Scanner teclado = new Scanner(System.in);
        Aplicacion app = new Aplicacion();
        /* Creas tu instancia para el examen, hora y fecha,
         * asignas esa hora y fecha a tu examen con los metodos
         * setFecha y setHora (Mutoadores respectivos para fecha y hora).
         */

        Examen e1=new Examen("Asignatura: mate ",2);        
        Hora h = new Hora(12, 30);
        e1.setHora(h);
        Fecha f= new Fecha(14, 6, 90);
        e1.setFecha(f);
        // Imprimes el estado del objeto examen
        System.out.println("Examen programado: \n" + e1);

        // Pides la nueva fecha
        System.out.println("ingrese la nueve fecha:");
       
        app.leerDia(teclado,f);
        app.leerMes(teclado,f);
        app.leerAño(teclado,f);
                                                   
        // Colocas esta fecha en el objeto del examen con el mutador setFecha
        e1.setFecha(f);
        // Imprimes el estado del objeto del examen ya con los datos actualizados
        System.out.println("La fecha ha sido modificada: \n" + e1);
       
        // Pides la nueva hora
        System.out.println("Introduce la nueva hora:");

        app.leerHora(teclado, h);
        app.leerMinuto(teclado, h);
       
        // Colocas esta hora en el objeto del examen con el mutador setHora
        e1.setHora(h);
        // Imprimes el estado del objeto del examen ya con los datos actualizados
        System.out.println("La hora ha sido modificada: \n" + e1);

    }
   
    public void leerDia(Scanner leer,Fecha f)
    {
        System.out.println("Dia: ");
        try
        {
            int d = leer.nextInt();
            if(!Fecha.validarDia(d))
            {
                mensajeError();
                leerDia(leer,f);
            }
            else
            {
                f.setDia(d);
            }
        }catch(InputMismatchException ime)
        {
            mensajeError();
            leerDia(leer,f);
        }                
    }
       
    public void leerMes(Scanner leer,Fecha f)
    {
        System.out.println("Mes: ");
        try
        {
            int m = leer.nextInt();
            if(!Fecha.validarMes(m))
            {
                mensajeError();
                leerMes(leer,f);
            }
            else
            {
                f.setMes(m);
            }
        }catch(InputMismatchException ime)
        {
            mensajeError();
            leerMes(leer,f);
        }                
    }
   
   
    public void leerAño(Scanner leer,Fecha f)
    {
        System.out.println("Año: ");
        try
        {
            int a = leer.nextInt();
            if(!Fecha.validarAño(a))
            {
                mensajeError();
                leerAño(leer,f);
            }
            else
            {
                f.setAño(a);
            }
        }catch(InputMismatchException ime)
        {
            mensajeError();
            leerAño(leer,f);
        }                
    }
   
    public void leerHora(Scanner leer,Hora h)
    {
        System.out.println("Hora: ");
        try
        {
            int h1 = leer.nextInt();
            if(!Hora.validarHora(h1))
            {
                mensajeError();
                leerHora(leer,h);
            }
            else
            {
               h.setHora(h1);
            }
        }catch(InputMismatchException ime)
        {
            mensajeError();
            leerHora(leer,h);
        }                
    }
   
    public void leerMinuto(Scanner leer,Hora h)
    {
        System.out.println("Minutos: ");
        try
        {
            int m1 = leer.nextInt();
            if(!Hora.validarMinuto(m1))
            {
                mensajeError();
                leerMinuto(leer,h);
            }
            else
            {
               h.setMinuto(m1);
            }
        }catch(InputMismatchException ime)
        {
            mensajeError();
            leerMinuto(leer,h);
        }                
    }
   
    public void mensajeError()
    {
        System.out.println("DATO INVALIDO");            
    }
   
}  

public class Examen
{
    private String examen;
    private int aula;
    private Fecha fecha;
    private Hora hora;

    //Metodo accesor para la variable de instancia fecha get
    public Fecha getFecha() {
        return fecha;
    }
 
    //Metodo mutador para la variable de instancia fecha set
    public void setFecha(Fecha fecha) {
        this.fecha = fecha;
    }

    //Metodo accesor para la variable de instancia hora get
    public Hora getHora() {
        return hora;
    }

    //Metodo mutador para la variable de instancia hora set
    public void setHora(Hora hora) {
        this.hora = hora;
    }
   
    public Examen(String examen, int aula)
    {
        this.examen = examen;
        this.aula = aula;
    }

    public String getExamen()
    {
        return examen;
    }

    public void setExamen(String examen)
    {
        this.examen = examen;
    }

    public int getAula()
    {
        return aula;
    }

    public void setAula(int aula)
    {
        this.aula = aula;
    }

    public String toString()
    {
        return examen+"\nAula:"+aula + "\n" + hora + "\n" + fecha ;
    }

}

public class Fecha
{
    private int dia;
    private int mes;
    private int año;

    public Fecha(int dia, int mes, int año)
    {
        if ( !Fecha.validarDia(dia) || !Fecha.validarMes(mes) || !Fecha.validarAño(año) )
        {
            System.out.println("Fecha no existe");
        }
        else
        {    
            this.dia = dia;
            this.mes = mes;
            this.año = año;
        }
    }

    public int getDia()
    {
        return dia;
    }

    public void setDia(int dia)
    {
        this.dia = dia;
    }

    public int getMes()
    {
        return mes;
    }

    public void setMes(int mes)
    {
        this.mes = mes;
    }

    public int getAño()
    {
        return año;
    }

    public void setAño(int año)
    {
        this.año = año;
    }
   
    public static boolean validarDia(int dia)
    {
        boolean resultado = true;
        if ( dia < 0 || dia > 30 )
        {
            resultado = false;
        }
        return resultado;
    }
   
    public static boolean validarMes(int mes)
    {
        boolean resultado = true;
        if ( mes < 0 || mes > 12 )
        {
            resultado = false;
        }
        return resultado;
    }
   
    public static boolean validarAño(int año)
    {
        boolean resultado = true;
        if ( año < 0 || año > 2012 )
        {
            resultado = false;
        }
        return resultado;
    }    
   
    @Override
    public String toString()
    {
        return dia + "/" + mes + "/" + año;
    }
}

public class Hora
{
    private int hora;
    private int minuto;

    public void setHora(int hora)
    {
        this.hora = hora;
    }

    public int getMinuto()
    {
        return minuto;
    }

    public void setMinuto(int minuto)
    {
        this.minuto = minuto;
    }

    public Hora(int hora, int minuto)
    {        
        if ( !Hora.validarHora(hora) && !Hora.validarMinuto(minuto))
        {
            System.out.println("Hora no reconocida");
        }
        else
        {
            this.hora = hora;
            this.minuto = minuto;
        }
    }

    public int getHora()
    {
        return hora;
    }
   
    public static boolean validarHora(int hora)
    {
        boolean resultado = false;
        if ( hora > 0 || hora < 24 )
        {
            resultado = true;
        }
        return resultado;
    }
   
    public static boolean validarMinuto(int min)
    {
        boolean resultado = false;
        if ( min > 0 || min < 60 )
        {
            resultado = true;
        }
        return resultado;
    }
   
    @Override
    public String toString()
    {
        return hora + ":" + minuto;
    }
}

Imagen de Jose Manuel

Ese código tiene algunos

Ese código tiene algunos errores subjetivos, si te ve el camarada Oscar te va a recomendar que evites el formateo de llaves tal y como lo estas haciendo. Revisa aquí para mas información.
Saludos.

Imagen de Cid

Exactamente en que convencion

Hola Jose Manuel en que convencion me he de fijar, obvio en todas pero en cual en específico te rerfieres al formateo de las llaves ?

Imagen de Cid

Ya vi a que te refieres,

Ya vi a que te refieres, gracias personalmente entiendo mejor con las llaves como las pongo pero bueno yo se que lo que yo entienda, no necesariamente los demas tambien lo entenderan asi como yo. Gracias.

No siguiendo la convencion

public static boolean validarMinuto(int min)
    {
        boolean resultado = false;
        if ( min > 0 || min < 60 )
        {
            resultado = true;
        }
        return resultado;
    }

Siguiendola

public static boolean validarMinuto(int min) {
        boolean resultado = false;
        if ( min > 0 || min < 60 ) {
            resultado = true;
        }
        return resultado;
    }

Acontinuacion probare el programa.gracias...

No hay problema si el año es bisiesto o no, ke bueno ke no me pidieron eso y mas.
La profesora me menciono algo sobre el uso del while pero no se para que lo usaria.

bueno gracias probare el programa y aver ke tal

UFF que bien el programa esta larguito, no creo ke por eso la profe me repruebe para nada, analizare bien toda su ayuda de los codigo gracias a esto podre hacer mis otros trabajos aun mas dificiles pero ya no con tantas dudas gracias se los agradesco