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.

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 darklatiz

Yo creo...

Sería esta basicamente { }, creo que Jose Manuel se refiere a tu "{" , en todos tus bloques tienes algo asi:

 

y tendría (bueno es recomendable) que ser:
 

creo que es eso.

Saludos

Imagen de Jose Manuel

Sep, es que me estoy

Sep, es que me estoy volviendo obsesivo con eso jeje. Por convención la llave que abre se inicia en la misma linea que la instruccion que estés utilizando (if, while, métodos, etc) y se cierra al nivel (identacion de la instrucción) en que se abrió. Te digo, es subjetivo :)
Saludos SrCid.

Ufff el programa de repente que imprime y se vuelve loco

Todo bien pero si agrego un dato invalido por ejemplo Miercoles u otro dato que no lo es me aparece el siguiente mensaje de error

Examen programado:
Asignatura: mate
Aula:2
12:30
14/6/90
ingrese la nueva fecha:
Dia: Lunes
DATO INVALIDO ........................................................................DE REPENTE ME CORRE ESTO
at EXAMFINAL2.Aplicacion.leerDia(Aplicacion.java:63) ESTO ES LO QUE ME MARCA COMO ERROR ALGUIEN PUEDE AYUDAR
at EXAMFINAL2.Aplicacion.leerDia(Aplicacion.java:63) leerDia(leer,f);
at EXAMFINAL2.Aplicacion.leerDia(Aplicacion.java:63)

at EXAMFINAL2.Aplicacion.leerDia(Aplicacion.java:63)

Y asi lo mismo pasa con la Hora

Introduce la nueva hora:
Hora:
5pm ..................inmediatamente me lanza todo esto
Dato invalido...............como tres veces o mas seguidas luego manda este error como el de arriva claro eso no hay problema

leerHora(leer,h); ...............esto me indica como errro que lo tengo mal
Otra cosa

Introduce la nueva hora:
Hora:
3444...............................SE SUPONE QUE AQUI ME SALDRIA DATO INVALIDO,... PORQUE SOLAMENTE SON 24 HORAS
Minutos:
3333..............................IGUAL A QUI PORQUE SON 60 MINUTOS
La hora ha sido modificada:
Asignatura: mate
Aula:2
3444:3333
3/4/5

Imagen de Jose Manuel

Cuando te salga un error pega

Cuando te salga un error pega bien el Stacktrace D: por lo mientras, si revisas las clases te darás cuenta que el método leerDia comprueba números, no letras. Revisa bien los métodos, entiéndelos.
Saludos

Y más que obsesión es para

Y más que obsesión es para tener consistencia en el lenguaje.

Como escribí demasiado hice un post al respecto:

Saludos

Imagen de Jose Manuel

Me acabo de dar cuenta de que

Me acabo de dar cuenta de que las condiciones están mal, deben llevar un AND no un OR. Se arregla colocando un   en lugar de   Se le debió pasar a SrCid.

Imagen de Cid

Si tenia un error al verificar la hora

Creo que ya sigue la convención que mencionan y ya valida la hora por lo demas igual te recomiendo que si te hicieras lo de año bisiesto y los d{ias de los meses para que te sirva de ejercicio.

 

 

 

 

Veo que el programa tiene esto pero en realidad no lo imprime

if ( !Fecha.validarDia(dia) || !Fecha.validarMes(mes) || !Fecha.validarAño(año) ){
System.out.println("Fecha no existe");
}else{
Veo que el programa nunca me da ese mensaje ke dice fecha no existente en realidad lo elimine porke ps no es necesario ke me aparsca
pero gracias

Mira que "casualidad" que en

Follow-up del comentario:

Mira que "casualidad" que en el cursito este al que me inscribí por internet la forma de evaluar es que tu programa pase las pruebas unitarias ( al menos hasta donde he podido ver ) ... tipo:

 

Y tu tienes que hacer la función suma.

Bien no?

Imagen de Cid

Re: Ufff el programa de repente que imprime y se vuelve loco

Así es el objeto Scanner esta provocando un bug en el código que te pase, perdón solo tienes que cambiar la clase Aplicación de mi ultimo post por esta:

 

Imagen de Cid

Pruebas de unidad así es @OscarRyz

Así es pero donde me encuentro estoy algo ocupado y la verdad solo codifique y no realice ninguna prueba, pero tienes razón aquí cuando menos tengo JUnit pero no me dí el tiempo, para hacer esas pruebas.

@SrCid jeje no era para otro

@SrCid jeje no era para otro comentario que habiamos hecho al principio de este post.

Y para hacer que el programa sepa distinguir entre am y pm

Para que el programa sepa si la hora es AM O PM
es una idea nada mas. tienen alguna idea de como podria ser . alguien me puede dejar algun ejemplo no importa cual ejemplo solo uno corto

Imagen de Jose Manuel

En el constructor de Hora

En el constructor de Hora puedes pasar un nuevo atributo, un string que sea AM o PM. Quedando así:
 
Y ya en el método iría mas o menos así;
 
Y para poder pasar el parametro tal y como esta alli, debes hacer algunos manejos con cadenas. Por ejemplo:
Introduce la hora:
12:36pm
Tomando como base esa cadena podemos hace lo siguiente:
Primero que nada buscar( ) PM o AM si esta seguimos tratando la cadena, sino esta mandamos mensaje de error. O podemos dejarlo vacio y hacer que el constructor(de Hora) mande el error.
Segundo, Si es que esta PM o AM entonces separar la cadena( ) segun ":" o los números. Lo que quieras.
Tercero, ya tienes en un arreglo los tres componentes de la hora, pasalos al constructor de la clase.
Fin.
Mas o menos es como debe de ser.

Imagen de Cid

AM y PM ? entonces porque manejas 24 horas no seria mejor 12 ?

Complementando lo que cubre jose Manuel creo entonces que deberÍas manejar solo 12 horas y el parametro de am o pm si no que chiste tiene que manejes 24 horas.

si de echo es una idea. pues

, y si de echo si boy a usar solo 12

es hora AM o PM?

pues a mi me gusta mas así

 
  

Debes tener contemplado que puedes establecer la hora según dos formatos la de AM/PM o bien 24 horas
 
  

cuando cambies de formato de la hora que en realidad es la posición del sol que ya te recomendé que fuera un Enum y claro que necesitas hacer operaciones para la hora en el cambio de formato... te recomiendo que siempre guardes la hora del 0 al 23
 
  

Imagen de Cid

Deacuerdo con java.daba.doo

Pero antes deberías entender que es un Enum, checate esto .

Imagen de arterzatij

No estaria mal...

En lo particular muchos facilitadores de la enseñanza no son de tiempo completo y los que son no se preocupar por actualizarce asi que los que no lo son no se preocupan por hacer este tipo de practicas, y los que lo hacen varias veces son dinos que solo se preocupan por lo estructurado... y que salgan datos en pantalla, sin realmente preocuparse por la ingenieria del codigo...

Worales.. y ahroa porque

Worales.. y ahroa porque tanto interés en este programa? No he puesto atención a todo lo que han escrito pero ya van dos páginas y les siguen mete y mete, pues de que se trata o que?

Tratare de hacer la segunda parte del programa pero sera dificil

el siguiente programa en java tendra que imprimir lo siguiente es casi lo mismo que el otro pero mas largo jajj mejor eso me gusta
El anterior programa imprimia lo siguiente

Examen programado:
Asignatura: mate
Aula:2
12Hrs:30Minutos
14/6/90
ingrese la nueve fecha:
Dia:
7
Mes:
8
Año:
2012
La fecha ha sido modificada:
Asignatura: mate
Aula:2
12Hrs:30Minutos
7/8/2012
Introduce la nueva hora:
Hora:
8
Minutos:
9
La hora ha sido modificada:
Asignatura: mate
Aula:2
8Hrs:9Minutos
7/8/2012

Esto es todo lo que me imprimia perfectamente bien :)
ahora esto es lo nuevo que me tendra que imprimir : cheken

crear otra clase que se llama Alumno;
con esto ya tendriamos 5 clases
Clase Fecha
Clase Hora
Clase Examen
Clase Aplicacion
Clase Alumno

Ingrese su Nombre para asignar el examen:
Jesus:.::: cualquier nombre puede ser
Ingrese la carrera en que esta:
Ing.sistemas computacionales
Datos guardados:

INGRESE SU CLAVE PARA REGISTRAR:................ INICIAMOS UN REGISTRO DE LA PERSONA INDICADA ASIGNANDOLE TODOS LOS DATOS.
Clave... 12490110
Progresando:
//try{Thread.sleep(4000);} catch(InterruptedException e){ } ESTE ES EL CODIGO PARA QUE TRANSCURAN 4 SEGUNDOS O MAS

Su examen a sido programado: ME TENDRA QUE IMPRIMIR DE NUEVO TODOS LOS DATOS ANTERIORES
Asignatura: mate
Aula:2
8Hrs:9Minutos................................ ESTA HORA ES LA NUEVA QUE SE INGRESA AL CORRER EL PROGRAMA
7/8/2012.......................................... ESTA FECHA IGUAL
Alumno: Jesus
Carrera: Ing.Sistemas computacionales :::::: estos son los datos que anteriormente ingresamos y se imprimen junto con todo lo anterior
Clave: 12490110

@jysusxtreme pon tu código (

@jysusxtreme pon tu código ( o salida de consola ) entre tags <code> y </code>

continuacion de este programa mañana

Este programa lo tratare de continuar mañana y doy el codigo si tengo dudas para que me echen una mano

Imagen de wmartinez

Necesito Alimentar , jugar , bañar a varias mascotas

Necesito Alimentar , jugar , bañar a varias mascotas , en una clase elegir la mascota y despues la demas clase hacen el resto, el ccodigo funciona por separado , en una clase elige y las otras lo bañan y juegan , no puedo hacer que funcione junto en que estoy errando soy nuevo primeras veces, si me ayudan , muchas gracias

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package mascotas;

import java.util.Scanner;

public class StartGame {

private final Mascotas mascota;
private final Scanner sc;

public StartGame() {
mascota = new Mascotas();
sc = new Scanner(System.in);
preguntaNombre();
preguntaEdad();
}

private void preguntaNombre(){
System.out.print("Nombre de la mascota: ");
String nombre = sc.nextLine();
mascota.setNombre(nombre);
}

private void preguntaEdad() {
System.out.print("Edad de la mascota: ");
int edad = sc.nextInt();
mascota.setEdad(edad);
}

private int presentaMenu() {
System.out.println("#######################################################");
System.out.println("¿Qué deseas hacer con " + mascota.getNombre() + "?");
System.out.println("[1] - Alimentar");
System.out.println("[2] - Bañar");
System.out.println("[3] - Jugar");
System.out.println("\n[0] - Salir");
System.out.print("Opción: ");
int opc = sc.nextInt();
return opc;
}

//public static void main(String[] args)
static {
StartGame game = new StartGame();
boolean continuar = true;
do {
int opc = game.presentaMenu();
switch(opc) {
case 0:
continuar = false;
break;
case 1:
System.out.println("Alimentando...");
game.mascota.alimentar();
System.out.println("Nivel de hambre: " + game.mascota.getHambre());
break;
case 2:
System.out.println("Bañando...");
game.mascota.bañarse();
System.out.println("Nivel de limpieza: " + game.mascota.getLimpieza());
break;
case 3:
System.out.println("Jugando...");
game.mascota.jugar();
System.out.println("Nivel de limpieza: " + game.mascota.getLimpieza());
System.out.println("Nivel de hambre: " + game.mascota.getHambre());
System.out.println("Nivel de energía: " + game.mascota.getEnergia());
break;
default:
System.out.println("Opción incorrecta. Inténtalo de nuevo.");
}
} while(continuar);
}

}

package mascotas;

import java.util.Vector;

public class Mascotas {

private String nombre;
private int edad;
private int energia;
private int hambre;
private int limpieza;
private Vector items;
private boolean alive = true;

public Mascotas(String nombre, int edad) {
this(); // esto llama al constructor por defecto (vacío).
this.nombre = nombre;
this.edad = edad;
}

public Mascotas() {
nombre = new String();
edad = 0;
energia = 100;
hambre = 0;
limpieza = 100;
items = new Vector<>();
}

public void alimentar() {
if(alive) {
if(hambre >= 5) {
hambre -= 5;
} else {
hambre = 0;
}
}
}

public void jugar() {
if(alive) {
hambre += 10;
energia -= 5;
limpieza -= 10;
if(hambre >= 100 || energia < 1) {
//muere
alive = false;
}
}
}

public void bañarse() {
if(alive) {
limpieza += 10;
}
}

public String getNombre() {
return nombre;
}

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

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

public int getEnergia() {
return energia;
}

public void setEnergia(int energia) {
this.energia = energia;
}

public int getHambre() {
return hambre;
}

public void setHambre(int hambre) {
this.hambre = hambre;
}

public int getLimpieza() {
return limpieza;
}

public void setLimpieza(int limpieza) {
this.limpieza = limpieza;
}

public Vector getItems() {
return items;
}

public void setItems(Vector items) {
this.items = items;
}

public boolean isAlive() {
return alive;
}

void StartGame() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

void presentaMenu() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package mascotas;

import java.util.Scanner;

/**
*
* @author user
*/
public class Elegir_mascotas {private final Mascotas mascota;
private final Scanner sc;

public Elegir_mascotas() {
mascota = new Mascotas();
sc = new Scanner(System.in);
preguntaNombre();
preguntaEdad();
}

private void preguntaNombre(){
System.out.print("Nombre de la mascota: ");
String nombre = sc.nextLine();
mascota.setNombre(nombre);
}

private void preguntaEdad() {
System.out.print("Edad de la mascota: ");
int edad = sc.nextInt();
mascota.setEdad(edad);
}

private int presentaMenuMascotas() {
System.out.println("########################################################");
System.out.println("¿Elija su mascota de Nombre " + mascota.getNombre() + "?");
System.out.println("[1] - Perro ");
System.out.println("[2] - Gato");
System.out.println("[3] - Cavallo");
System.out.println("\n[0] - Salir");
System.out.print("Opción: ");
int opc = sc.nextInt();
return opc;
}

public static void main(String[] args) {
Elegir_mascotas game = new Elegir_mascotas();
boolean continuar = true;
do {
int opc = game.presentaMenuMascotas();
switch(opc) {
case 0:
continuar = false;
break;
case 1:
System.out.println("Perro...");
game.mascota.presentaMenu();

break;
case 2:
System.out.println("Gato...");
game.mascota.presentaMenu();

break;
case 3:
System.out.println("Cavallo...");
game.mascota.presentaMenu();

break;
default:
System.out.println("Opción incorrecta. Inténtalo de nuevo.");
}
} while(continuar);
}

}

Si las mascotas pudieran "bloguear"

▲ LoL ;)

Fuente: