import java.util.Scanner;
public class prova2{
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int comp=1;
do{
float a= scan.nextFloat();
char b= scan.next().charAt(0);
float c= scan.nextFloat();
float d=0;
switch(b){
case '+':d=somma(a,c);break ;
case '-':d=differenza(a,c);break ;
case '*':d=prodotto(a,c);break ;
case '/':d=divisione(a,c);break ;
case '^':potenza(a,c);break ;
}
System.out.println("scrivi exit");//questa è un istruzione di prova per vedere perchè non riuscivo ad uscire dal ciclo
String esc= scan.nextLine();
/*dovrebbe leggere la stringa che do io dalla tastiera ma non aspetta che io ne digiti una ma legge direttamente la riga vuota
e quindi non riesco ad uscire mai dal ciclo*/
String out="exit";
System.out.println(esc);//infatti questa istruzione visualizza sullo schermo una riga vuota
comp= esc.compareTo(out);
System.out.println(comp);/*e alla riga successiva visualizza il valore di comparazione tra le due stringhe che sarà sempre
diverso da zero perchè il programma non mi da la possibilità di immettere la stringa uguale a quella pilota che ho impostato*/
}
while(comp!=0);
}
public static float somma(float n1, float n2){
float r=n1+n2;
return r;
}
public static float differenza(float n1, float n2){
float r=n1-n2;
return r;
}
public static float prodotto(float n1, float n2){
float r=n1*n2;
return r;
}
public static float divisione(float n1, float n2){
float r=n1/n2;
return r;
}
public static float potenza(float n1, float n2){
float c=1;
for(int i=0;i<n2;i++){
c=c*n1;
}
return c;
}
}
spero di aver spiegato bene la situazione. Non riesco a capire perchè l'istruzione di scan in questo caso si comporta cosi, quando utilizzata allo stesso modo in altri codici si comporta normalmente