Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Risoluzione problema [esercizio calcolatrice]
Forum - Java - Risoluzione problema [esercizio calcolatrice]

Avatar
HollyGR (Normal User)
Newbie


Messaggi: 4
Iscritto: 21/11/2008

Segnala al moderatore
Postato alle 2:21
Venerdì, 21/11/2008
Ciao, sono nuovo di questo forum.
Ho da poco iniziato a studiare java a scuola e quindi di conseguenza a programmare con esso.
Sono arrivato ad affrontare i cicli e mi ritrovo a dover scrivere il codice per la creazione di una calcolatrice testuale nonchè base.
La calcolatrice deve effettuare le 4 operazioni base e non devo usare lo switch visto che non l'ho ancora trattato.
Per adesso il mio problema sta nel fatto che non so bene come usare all'interno del codice il do-while [che in questo caso mi pareva il più appropriato :-|]

In pratica a fine operazione devo chiedere all'utente se vuole effettuare un'altra operazione, quindi il ciclo dovrebbe permettermi di tornare all'inizio del programma e ripetere tutte le "operazioni" di scelta dell'operazione ecc

Ecco il mio codice.
Penso che comunque manchi ancora qualcosa al programma per reputarlo completo eppure mi sfugge qualcosa...dopo che termina il do-while non torna all'inizio del programma come invece fa magicamente con una freccia sul flowchart :rotfl:

Codice sorgente - presumibilmente Java

  1. class Calcolatrice
  2. {
  3. public static void main(String args[])
  4.         {
  5.  
  6.         ConsoleReader c = new ConsoleReader(System.in);
  7.  
  8.         double num1,
  9.                    num2,
  10.                    risultato;
  11.  
  12.         String Segno    = new String("");
  13.         String Scelta   = new String("");
  14.  
  15. do
  16. {
  17.  
  18.  
  19.         System.out.println("Inserire il primo numero");
  20.         num1= c.readDouble();
  21.         System.out.println("Inserire il secondo numero");
  22.         num2= c.readDouble();
  23.         System.out.println("Inserire il segno dell'operazione da svolgere (+,-,/,*)");
  24.         Segno= c.readLine();
  25.  
  26.  
  27.         if (Segno.equals ("+"))
  28.         {
  29.                         risultato = num1+num2;
  30.                         System.out.println("Il risultato dell'operazione ("+num1+" "+Segno+" "+num2+") e' "+risultato);
  31.  
  32.         }
  33.  
  34.         else
  35.         {
  36.  
  37.         if (Segno.equals("-"))
  38.  
  39.         {
  40.                 risultato=num1-num2;
  41.                 System.out.println("Il risultato dell'operazione ("+num1+" "+Segno+" "+num2+") e' "+risultato);
  42.         }
  43.         else
  44.         {
  45.                 if (Segno.equals("/"))
  46.                 {
  47.                         if (num2 == 0)
  48.                         {
  49.                         System.out.println("Impossibile dividere x 0");
  50.                         }
  51.  
  52.                         else
  53.                         {
  54.                         risultato=num1/num2;
  55.                         System.out.println("Il risultato dell'operazione ("+num1+" "+Segno+" "+num2+") e' "+risultato);
  56.                         }
  57.  
  58.         }
  59.         else
  60.         {
  61.                 if (Segno.equals("*"))
  62.                 {
  63.                         risultato = num1*num2;
  64.                         System.out.println("Il risultato dell'operazione ("+num1+" "+Segno+" "+num2+") e' "+risultato);
  65.                 }
  66.  
  67.  
  68.         }
  69. }
  70. }
  71. System.out.println("Vuoi continuare? Si/No");
  72. Scelta = c.readLine();
  73. }
  74. while(Scelta.equals("Si"));
  75. }
  76. }



Grazie in anticipo a chiunque abbia voglia di aiutarmi :k:

Ultima modifica effettuata da HollyGR il 22/11/2008 alle 1:14
PM Quote
Avatar
VaLeRiO (Ex-Member)
Pro


Messaggi: 114
Iscritto: 28/06/2008

Segnala al moderatore
Postato alle 14:44
Venerdì, 21/11/2008
Il codice sembra ok.
Prova queste 2 cose:

1) Invece di un do..while fai un while..do.
Sono più semanticamente "capibili" e più utilizzati. Semplicemente fai:
Codice sorgente - presumibilmente Java

  1. String scelta = "Si"
  2. while(scelta.equals("Si")) {
  3.   // operazioni
  4.   System.out.println("Vuoi continuare? Si/No");
  5.   scelta = in.readLine(); // readLine o quello k è.
  6. }


2) E' possibile che in qualche modo il \n dell'invio dalla tastiera possa creare problemi.

Prova e dimmi :P

PM Quote
Avatar
HollyGR (Normal User)
Newbie


Messaggi: 4
Iscritto: 21/11/2008

Segnala al moderatore
Postato alle 16:33
Venerdì, 21/11/2008
Ciao, innanzitutto grazie per l'aiuto, ho provato a usare il metodo che mi hai consigliato, stavolta non da errore però subito dopo aver effettuato l'operazione da me scelta, mi dice premi un tasto per continuare, l'output della domanda [Vuoi continuare? si/no] non viene stampato :-|

Ora ha solo questo problemino,ho editato il codice nel primo post, inserendo quindi il while...ora mi tocca capire dove mettere la stampa della domanda perchè messa così non viene stampata :rotfl:

Ultima modifica effettuata da HollyGR il 21/11/2008 alle 16:46
PM Quote
Avatar
fabi3194 (Ex-Member)
Expert


Messaggi: 206
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 16:57
Venerdì, 21/11/2008
Aspetta...perchè a me
Codice sorgente - presumibilmente Java

  1. ConsoleReader c = new ConsoleReader(System.in);


restituisce un errore :-|:-|:-|:-|?

PM Quote
Avatar
HollyGR (Normal User)
Newbie


Messaggi: 4
Iscritto: 21/11/2008

Segnala al moderatore
Postato alle 17:10
Venerdì, 21/11/2008
hai la suddetta classe sottoforma di file per poterla richiamare?
:-|

edit: la metto come allegato :k:


HollyGR ha allegato un file: ConsoleReader.zip (791 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da HollyGR il 21/11/2008 alle 17:11
PM Quote
Avatar
fabi3194 (Ex-Member)
Expert


Messaggi: 206
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 18:32
Venerdì, 21/11/2008
scusami ma dove la devo mettere?nella stessa cartella del file java?

PM Quote
Avatar
HollyGR (Normal User)
Newbie


Messaggi: 4
Iscritto: 21/11/2008

Segnala al moderatore
Postato alle 23:28
Venerdì, 21/11/2008
Testo quotato

Postato originariamente da fabi3194:

scusami ma dove la devo mettere?nella stessa cartella del file java?



Esattamente!

edit: sono riuscito dopo un ulteriore occhiata al codice, a rimetterlo a posto e farlo finalmente funzionare usando il do-while :D
Metto il codice corretto nel primo post!

Ultima modifica effettuata da HollyGR il 22/11/2008 alle 1:12
PM Quote