|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#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;
}
}
}
}
|
|
|
|
|
|
#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 |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Sep 2016
Messaggi: 4
|
Quote:
|
|
|
|
|
|
|
#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 |
|
|
|
|
|
#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: 00:17.



















