Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA]espressione aritmetica. dove sta l'errore?

    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;
    	}
    	
    	
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sposto nel forum "Java".

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Le stringhe non si confrontano con l'operatore ==, ma essendo oggetti si confrontano con il metodo equals():

    codice:
    if(espr.equals(".")){ System.out.println("no"); System.exit(-1);}

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Le stringhe non si confrontano con l'operatore ==, ma essendo oggetti si confrontano con il metodo equals():

    codice:
    if(espr.equals(".")){ System.out.println("no"); System.exit(-1);}

    Ciao.
    cavolo credimi che ci stavo impazzendo... che stupido che sono
    ma non dovrebbe dare errore eclipse?
    Ultima modifica di DarkPassenger; 28-04-2015 a 12:47

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da DarkPassenger Visualizza il messaggio
    ma non dovrebbe dare errore eclipse?
    Un IDE "sveglio" potrebbe segnalarti un suo warning, se supportato/attivato.
    Ma in generale per il linguaggio Java NON è un errore. Stavi semplicemente confrontando due reference (e questo è lecito). Solo che una stringa letterale, "costante", come "." non sarà mai uguale come reference ad un'altra stringa presa in input a runtime ... anche se contenesse gli stessi caratteri.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Un IDE "sveglio" potrebbe segnalarti un suo warning, se supportato/attivato.
    Ma in generale per il linguaggio Java NON è un errore. Stavi semplicemente confrontando due reference (e questo è lecito). Solo che una stringa letterale, "costante", come "." non sarà mai uguale come reference ad un'altra stringa presa in input a runtime ... anche se contenesse gli stessi caratteri.
    chiaro e coinciso!
    grazie a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.