ragazzi, questo è un esercizio anche stupido ma non capisco dove sta l'errore.
devo valutare le espressioni senza considerare le priorità delle parentesi.
fa tutto, esce e funziona...tranne quando digito "."
quando digito "." invece dell'espressione dovrebbe uscire dal programma ma a me da un errore:
ecco il codice:
codice:
package string;import java.util.*;
public class EspressioneAritmeticaSenzaPriorita {
public static void main(String[]args){
String espr=null;
if(args.length==1){
espr=args[0];
}
else{
Scanner sc=new Scanner(System.in);
System.out.println("Espr>");
espr=sc.nextLine();
if(espr=="."){ System.out.println("no"); System.exit(-1);}
}
StringTokenizer st=new StringTokenizer(espr, "+-*/",true);
int risfin=valuta(st);
System.out.println(espr+"="+risfin);
}
public static int valuta(StringTokenizer st){
int ris=Integer.parseInt(st.nextToken());
while(st.hasMoreTokens()){
char op=st.nextToken().charAt(0); //ottiene operatore
int num=Integer.parseInt(st.nextToken());
switch(op){
case '+': ris=ris+num; break;
case '-': ris=ris-num; break;
case '*': ris=ris*num; break;
default: ris=ris/num; //che sarebbe case '/'
}
}
return ris;
}
}