|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 24
|
Calcolatrice - programmino in JAVA
Ho realizzato un programmino in Java che simula il funzionamento di una calcolatrice che svolge le 4 operazioni matematiche fondamentali.
Ecco il codice: Codice:
import java.util.Scanner;
public class Calcolatrice {
public void intestazione() {
System.out.println("+--------------------------+");
System.out.println("| CALCOLATRICE |");
System.out.println("+--------------------------+");
System.out.println("***Realizzato da xxx***\n");
}
public void presentazione() {
Scanner input = new Scanner(System.in);
System.out.println("Ciao! Come ti chiami?");
String nome = input.nextLine();
System.out.println("Ciao " +nome+ "!");
}
public void operazioni() {
Scanner input = new Scanner(System.in);
System.out.printf("Digita un numero: ");
float num1 = input.nextFloat();
System.out.printf("Digita un altro numero: ");
float num2 = input.nextFloat();
System.out.println("Ora digita l'operazione che desideri fare:\n1) somma;\n2) sottrazione;\n3) moltiplicazione;\n4) divisione.");
int scelta = input.nextInt();
switch(scelta) {
case 1: {
System.out.println("Hai scelto la somma.");
float result = num1+num2;
System.out.printf("La somma tra %.2f e %.2f vale %.2f.\n", num1,num2,result);
break;
}
case 2: {
System.out.println("Hai scelto la sottrazione.");
float result = num1-num2;
System.out.printf("La differenza tra %.2f e %.2f vale %.2f.\n", num1,num2,result);
break;
}
case 3: {
System.out.println("Hai scelto la moltiplicazione.");
float result = num1*num2;
System.out.printf("La moltiplicazione tra %.2f e %.2f vale %.2f.\n", num1,num2,result);
break;
}
case 4: {
System.out.println("Hai scelto la divisione.");
float result = num1/num2;
System.out.printf("La divisione tra %.2f e %.2f vale %.2f.\n", num1,num2,result);
break;
}
default: {
System.out.println("Scelta non riconosciuta.");
break;
}
}
}
public static void main(String[] args) {
Calcolatrice calc = new Calcolatrice();
calc.intestazione();
calc.presentazione();
calc.operazioni();
System.exit(0);
}
}
Ho provato con un ciclo do...while ma senza avere successo... Consigli? Ultima modifica di Hawk88 : 05-02-2012 alle 12:31. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Direi che il do-while può andare. Tipo:
Codice:
Scanner input = new Scanner(System.in);
boolean termina = false
do {
//tutto il malloppone
System.out.println("avanti savoia [n/s]?")
termina = "n".equals(scanner.nextLine());
} while(!termina)
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 24
|
Non funziona, non mi consente di inserire S o N per continuare.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Quel birichino.
Usa "n".equals(input.next("\\W"))//cioè dammi un carattere al posto di "n".equals(input.nextLine()) Ho scritto input.nextLine() per via dell'abitudine a lavorare per linee con Scanner. Quel che capita col nextLine() è che, poichè la console java richiede un invia per nutrire lo scanner "vuoto", quando chiedi un intero e premi invio lo scanner ti da l'interno ma si tiene l'interruzione di linea nel buffer. Un successivo nextInt la scarterebbe mentre per un "nextLine" è valida, è restituita e fa "saltare" la richiesta. next("\\W") è come nextInt, solo che piglia una lettera. |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 24
|
Ora mi consente di inserire una lettera però appena faccio "invio" mi da l'errore!
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Qui funziona. Mhhh... la trama si infittisce...
che errore ti da? |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 24
|
Ecco la schermata di NetBeans:
Codice:
+--------------------------+ | CALCOLATRICE | +--------------------------+ ***Realizzato da xxx*** Ciao! Come ti chiami? Matteo Ciao Matteo! Digita un numero: 104 Digita un altro numero: 250 Ora digita l'operazione che desideri fare: 1) somma; 2) sottrazione; 3) moltiplicazione; 4) divisione. 1 Hai scelto la somma. La somma tra 104,00 e 250,00 vale 354,00. Vuoi continuare? [S/N] S Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.next(Scanner.java:1463) at calcolatrice.Calcolatrice.operazioni(Calcolatrice.java:66) at calcolatrice.Calcolatrice.main(Calcolatrice.java:75) Java Result: 1 BUILD SUCCESSFUL (total time: 12 seconds) |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Passa la stringa: "\\w" (al posto di "\\W") come pattern al metodo next() dello scanner.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Anche \\w non va bene.
Facciamo così. Anzichè nextFloat() usa: Float.parseFloat(input.nextLine()) al posto di: input.nextInt() usa Integer.parseInt(input.nextInt()) e anzichè: "w".equals(next("\\w")) usa input.nextLine().toLowerCase().startsWith("S") Riassumendo: Codice:
float num1 = Float.parseFloat(input.nextLine());
System.out.printf("Digita un altro numero: ");
float num2 = Float.parseFloat(input.nextLine());
System.out.println("Ora digita l'operazione che desideri fare:\n1) somma;\n2) sottrazione;\n3) moltiplicazione;\n4) divisione.");
int scelta = Integer.parseInt(input.nextLine());
Codice:
System.out.println("Vuoi terminare [n/s]?");
termina = input.nextLine().toLowerCase().startsWith("s");
Anche così non è a prova di bomba ma è già più tollerante. |
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Aug 2010
Messaggi: 24
|
Ho semplicemente sostituito
Codice:
"n".equals(input.next("\\W"));
Codice:
"n".equals(input.next("\\w"));
Ora funziona, grazie a tutti! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:29.



















