Visualizzazione dei risultati da 1 a 3 su 3

Discussione: calcolatrice

  1. #1
    Utente di HTML.it L'avatar di el92
    Registrato dal
    Dec 2014
    Messaggi
    177

    calcolatrice

    Ciao a tutti sto imparando da poco il linguaggio java e sono incappata in un problema :
    scrivi un programma che calcoli la somma e la differenza di n numeri inseriti da terminale;
    i numeri e gli operatori sono separati tra di loro da uno o più spazi.
    es: 1 + 3 - 4 + 12 + 2 - 10 - 1
    e va stampato:3

    Ho scitto il programma:

    codice:
    import java.util.StringTokenizer;
    import java.util.Scanner;
    class Calcolatore{
    public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    String numeri=sc.nextLine();
    StringTokenizer st = new StringTokenizer(numeri," ");
    
    int somma=0;
    while(st.hasMoreTokens()){
             String f=st.nextToken();
             int n=Integer.parseInt(f);
           if(f.equals("+")){
              somma=somma+n; 
           }else if(f.equals("-")){
           somma=somma-n; 
       }
    }
    System.out.println(somma);
    }
    }
    Perchè come output mi preleva solo il primo numero. Sembrerà banale ma sono in crisi

  2. #2
    Ciao el92, per come hai scritto tu il codice tutta l'espressione la devi inserire in un unica riga. Cmq anche facendo cosi ti accorgerai che c'è un'altro problema che però ti lascio scoprire da sola.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Suggerimento.
    Tu stai usando StringTokenizer che, come immagino tu sappia, serve appunto a tokenizzare una stringa. Ora, se tu specifichi che il separatore è lo spazio, data la stringa che hai postato avrai 13 tokens. Quindi, quel ciclo while farà 13 giri. Uno per ciascun token.
    Quindi, il primo token sarà "1", il secondo sarà "+", il terzo sarà "3", ecc.

    Devi, quindi, rivedere per bene il corpo di quel while perchè, mi pare logico, non potrà mai funzionare in quel modo.


    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

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.