come risolvere il ciclo se metti un valore di errore e ritorna alla dichiarazione ELSE sul mio codice specificato in Java

voglio che l'uscita del programma torni alla domanda se l'utente inserisce un valore sbagliato.

questo è per i miei compiti. ho cercato di cercare su Youtube e Google, ma non riesco a identificare il mio errore e non ha mostrato qual è il mio errore.

final int MINS_IN_AN_HOUR = 60;
final int AN_HOUR = 100;
final int LAST_MINUTE_OF_A_DAY = 2359;
int arrivalTime = 0;
int arrivalMins = 0;
Scanner input = new Scanner(System.in);

System.out.print("Please enter the vehicle's arrival time (24-hour format): ");
    while(true){
    arrivalTime = input.nextInt();
       if(arrivalTime >= AN_HOUR && arrivalTime <= LAST_MINUTE_OF_A_DAY){
          int hours = arrivalTime/AN_HOUR;  
          int minutes = arrivalTime - hours * AN_HOUR;   
          arrivalMins = hours * MINS_IN_AN_HOUR + minutes;  
          break;  // If user was correct, exit program
       }
       else{
          System.out.println("Please enter a valid number or enter a valid time");
          System.out.print("Please enter the vehicle's arrival time (24-hour format): ");

}}}}}}

l'uscita prevista deve essere l'altra istruzione e ripetere il ciclo.


En title : How to fix the loop if put an error value and return to ELSE statement on my given code in Java

6 Comments:

  1. I typed string " error " then it must be a loop to else statement Here 's the output : please enter the vehicle 's arrival time ( 24-hour format ) : error Exception in thread " main " java.util.InputMismatchException at java.util.Scanner.throwFor ( Scanner.java : 864 ) at java.util.Scanner.next ( Scanner.java : 1485 ) at java.util.Scanner.nextInt ( Scanner.java : 2117 ) at java.util.Scanner.nextInt ( Scanner.java : 2076 ) at CalculateParkingFee.ParkingFee.main ( ParkingFee.java : 88 )
  2. when I execute your code I got this output : please enter the vehicle 's arrival time ( 24-hour format ) : exception in thread " main " java.util.NoSuchElementException at java.util.Scanner.throwFor ( Scanner.java : 862 ) at java.util.Scanner.next ( Scanner.java : 1485 ) at java.util.Scanner.nextInt ( Scanner.java : 2117 ) at java.util.Scanner.nextInt ( Scanner.java : 2076 ) at HelloWorld.main ( HelloWorld.java : 15 )
  3. questo comportamento è previsto se il Scanner viene chiesto un int, ma non ottiene uno. si dovrebbe inserire un try .. catch intorno al nextInt() e continue nel catch.
  4. il problema nel vostro codice non è la vostra condizione, il problema è che si sta leggendo l'input dell'utente utilizzando nextInt(), senza catturare l'eccezione nel caso in cui l'input dell'utente non è un int.

    basta sostituire questa linea:

    arrivalTime = input.nextInt();
    

    con un blocco prova... cattura

    try {
        arrivalTime = input.nextInt();
    } catch(InputMismatchException e) {
        arrivalTime = -1; // will trigger your else status
    }
    

More similar articles:

  • Map.contains Valore ritorna Falso anche se il valore specificato esiste in valueset e non esiste un errore di tipo objecttype
  • Java 7u65 e 7u67 finestre WebStart errore percorso cache (Impossibile caricare file/URL specificato)
  • funzione membro nella coda di priorità java che ritorna ma non rimuove il valore specificato?
  • ritorna il carattere associato al codice Asci specificato in R
  • come scrivere una dichiarazione IF ELSE in una query MySQL
  • overridePendingTransition causa errore: java.lang.IllegalStateException: il bambino specificato ha già un genitore
  • perché il programma ritorna con un codice di uscita diverso da quello specificato?
  • ritorna un riferimento pagina come risultato dell'azione sulla pagina?
  • quando la query Lambda Usa "Contiene" e non corrisponde alla condizione "Riferimento oggetto non impostato su un'istanza di un oggetto" l'errore ritorna
  • come attivare un codice quando si ritorna dal ViewController "Over Current Content"?
  • come trovare la data indicata è con nell'intervallo di date specificato
  • Tao_IDL ritorna con un errore non specificato durante la compilazione usando gcc
  • ritorna l'ArrayList aggiornato <characters>dopo aver rimosso l'elemento specificato all'indice</characters>
  • utilizzando Moto a Mock Lambda Response ritorna 'b "errore in esecuzione lambda: (2,' WaitNamedPipe ',' Il sistema non può trovare il file specificato. ')' '
  • come selezionare l'elemento specificato utilizzando XSLT tramite il suo indice?
  • ColdFusion valore inital di corrente quando nessun indice specificato in floop
  • accesso negato anche se ho specificato policy.url in java.security
  • mysqldump non ritorna al file specificato
  • operazione di somma eseguita su righe fino al valore specificato: una nuova riga per ogni gruppo per il quale la somma supera il valore specificato
  • perché questo cookie non ritorna al percorso specificato quando il dominio inizia con www?
  • come aggiungere un gestore di eventi specifico ad un controllo non specificato?
  • ritorna un elenco delle località di Google Maps che ho specificato in precedenza
  • valore boolean AngularJS ritorna sempre vero nel campo di applicazione
  • pthread_cond_timedwait non ritorna dopo il timeout specificato
  • ritorna nessuna cella in base alla variabile nil
  • come faccio a forzare almeno un parametro da un set specificato?
  • ritorna una funzione generica con tipo specificato
  • restituire un valore atteso ritorna una Promessa? (es7 asincrono/attesa)
  • JSON ritorna sempre "client_id non specificato"
  • Goto specificato numero di linea utilizzando JTextPane