PDA

View Full Version : [JAVA] uscita dal ciclo


andreadago95
03-11-2017, 16:18
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

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;

}
}
}

}

sottovento
03-11-2017, 16:23
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

andreadago95
03-11-2017, 16:30
Devi cambiare la condizione del while
L'ho fatto mettendo un '||' ma non cambia , comunque non termina se divido per 0

sottovento
03-11-2017, 17:04
Apparentemente per restare nel ciclo hai bisogno che sia err sie err1 siano != 0, quindi terrei l'AND e cambierei le uguaglianze

mone.java
10-11-2017, 01:49
Ricorda che da Java7 si puo usare lo switch sulle stringhe.

Altro piccolo suggerimento: cerca di essere cosnitente con la sintassi:


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!");
}