|
|
|
|
Strumenti |
03-11-2017, 16:18 | #1 |
Junior Member
Iscritto dal: Sep 2016
Messaggi: 4
|
[JAVA] uscita dal ciclo
Scusate il disordine ma qualcuno sa dirmi perché una volta scritto si alla fine del ciclo non ritorna ma termina? ps: se tolgo rubbish non esce quando num2=0
Codice:
public class Es6Lab3{ public static void main(String[] args){ String operazione, rompiciclo, rubbish; double membro1, membro2, risultato; int err=1, err1=1; while (err!=0 && err1!=0) { Scanner tastiera= new Scanner(System.in); System.out.println("Inserire simbolo dell'operazione che si desidera eseguire: "); System.out.println("Inserire '+' se si desiderano sommare due membri."); System.out.println("Inserire '-' se si desiderano sottrarre due membri."); System.out.println("Inserire '*' se si desiderano moltiplicare due membri."); System.out.println("Inserire '/' se si desiderano dividere due membri."); operazione= tastiera.nextLine(); if(operazione.equals("u")) {err--;System.out.println("Siete usciti dal programma!");} else if(!operazione.equals("u")){ System.out.println("Bene! Avete scelto l'operazione da compiere, ora per completare l'operazione inserire i due membri.\nSi ricorda inoltre che nella divisione il secondo membro deve essere diverso da 0"); membro1=tastiera.nextDouble(); membro2=tastiera.nextDouble(); if(operazione.equals("/") && membro2==0) {System.out.println("Non e' possibile dividere per 0!!!"); err1=0;} if(operazione.equals("/")){ if(membro2!=0){risultato= membro1/membro2; System.out.println(membro1+"/"+membro2+"="+ risultato);} } if(operazione.equals("*")) {risultato= membro1*membro2; System.out.println(membro1+"*"+membro2+"="+ risultato);} if(operazione.equals("+")) {risultato= membro1+membro2; System.out.println(membro1+"+"+membro2+"="+ risultato);} if(operazione.equals("-")) {risultato= membro1-membro2; System.out.println(membro1+"-"+membro2+"="+ risultato);} System.out.println("Se si desidera compiere un'altra operazione scrivere 'si', altrimenti premere qualsiasi tasto per terminare l'esecuzione:"); rubbish=tastiera.nextLine(); rompiciclo=tastiera.nextLine(); if(!rompiciclo.equals("si")) err=0; else err=1; } } } } |
03-11-2017, 16:23 | #2 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Perche' per uscire occorre che entrambe le condizioni siano vere, cioe' che entrambe le variabili err ed err1 siano diverse da zero.
In caso di errore ne vai a cambiare una sola, quindi non esce. Devi cambiare la condizione del while
__________________
In God we trust; all others bring data |
03-11-2017, 16:30 | #3 | |
Junior Member
Iscritto dal: Sep 2016
Messaggi: 4
|
Quote:
|
|
03-11-2017, 17:04 | #4 |
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Apparentemente per restare nel ciclo hai bisogno che sia err sie err1 siano != 0, quindi terrei l'AND e cambierei le uguaglianze
__________________
In God we trust; all others bring data |
10-11-2017, 01:49 | #5 |
Senior Member
Iscritto dal: May 2008
Città: Seattle (WA)
Messaggi: 306
|
Ricorda che da Java7 si puo usare lo switch sulle stringhe.
Altro piccolo suggerimento: cerca di essere cosnitente con la sintassi: Codice:
if(operazione.equals("u")) {err--;System.out.println("Siete usciti dal programma!");} // Dovrebbe essere if (operazione.equals("u")) { err--; System.out.println("Siete usciti dal programma!"); }
__________________
"Considerate la vostra semenza fatti non foste a viver come bruti ma per seguir virtute e canoscenza" |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:51.