2011-10-16 10 views
20

He intentado hacer un reloj que el usuario pueda configurar. Quería que se le hicieran preguntas al usuario y respondían en palabras como sí o no. Lo hice por cosas que no cambian con este código, como si el usuario desea que se muestren los segundos o no, pero no funciona tan bien cuando quiero que la cadena cambie, por ejemplo, de AM a PM cuando excede horas 12. Esto es lo que estoy utilizando:¿Cómo se comprueba si una cadena no es igual a un objeto u otro valor de cadena en java?

System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in); 
    TimeOfDayStringQ = TimeOfDayQ.next(); 

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) { 
     System.out.println("Sorry, incorrect input."); 
     System.exit(1); 
    } 

    ... 

    if(Hours == 13){ 
     if (TimeOfDayStringQ.equals("AM")) { 
      TimeOfDayStringQ.equals("PM"); 
     } else { 
      TimeOfDayStringQ.equals("AM"); 
     } 
       Hours = 1; 
     } 
    } 

Cada vez que entro en nada cuando me incita, si pongo AM, PM, o de otra forma, me da el error que escribí y cierra todas las aplicaciones . Cuando elimino la sección de código que termina el programa con el error, no cambiará la cadena de AM a PM cuando las horas son iguales a 13. Gracias por su ayuda, es muy apreciado.

+3

A modo de observación, para evitar confusiones, las variables Java se debe comenzar con letras minúsculas. –

Respuesta

25

cambiar el código para:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in); 
TimeOfDayStringQ = TimeOfDayQ.next(); 

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <-- 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

... 

if(Hours == 13){ 
    if (TimeOfDayStringQ.equals("AM")) { 
     TimeOfDayStringQ = "PM"; // <-- 
    } else { 
     TimeOfDayStringQ = "AM"; // <-- 
    } 
      Hours = 1; 
    } 
} 
13

que querrá utilizar & & para ver que no es igual a "AM" Y no es igual a "PM"

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

Para ser claros también se puede hacer

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){ 
    System.out.println("Sorry, incorrect input."); 
    System.exit(1); 
} 

para tener la frase not (one or the other) en el código (recuerde los corchetes (silenciosos))

+0

Muchas gracias. Soy un poco nuevo en Java y es probable que haya cometido un error tan simple. Muchas gracias. – Pillager225

1

Cambie su || a & & por lo que solo saldrá si la respuesta es "AM" o "PM".

Cuestiones relacionadas