Buongiorno a tutti!
Ho da pochissimo iniziato ad interessarmi di programmazione, più che altro per sfizio personale. Tra ieri e oggi mi sono informato un po' su Java e su come scrivere qualche semplicissimo programmino.
Ho scritto questa calcolatrice davvero semplice, per fare pratica, mi piacerebbe sapere da voi cosa posso migliorare e semplificare. Tenete conto che moltissimi metodi saranno certamente più complessi del necessario, d'altronde dovevo fare un po' di pratica.
Il programma si compone di due classi: calc e calcola (nomi totalmente casuali!). Calc è il programma principale, calcola contiene i constructor che definiscono gli oggetti somma, moltiplica, dividi e sottrai (ripeto: dovevo fare pratica).
Ecco qui il codice della classe
main:
import java.util.Scanner;
class calc
{
static int Num1, Num2, Result;
static String altro;
static String operazione;
static Scanner calc = new Scanner(System.in);
static Scanner again = new Scanner(System.in);
static Scanner oper = new Scanner(System.in);
static boolean validate;
public static void main (String[] args)
{
calcola EseguiOperazione;
EseguiOperazione = new calcola();
do
{do
{
System.out.println("Inserisci il primo numero: ");
if(!calc.hasNextInt()) {
validate = false;
System.out.println("Inserisci un numero!");
System.exit(0);
}else {
validate = true;
}
}while (validate = false);
Num1 = calc.nextInt();
do {
System.out.println("Inserisci il secondo numero: ");
if(!calc.hasNextInt()) {
validate = false;
System.out.println("Inserisci un numero!");
System.exit(0);
}else {
validate = true;
}
} while (validate = false);
Num2 = calc.nextInt();
do
{
System.out.println("Inserisci il tipo di operazione");
System.out.println("A. Addizione");
System.out.println("B. Sottrazione");
System.out.println("C. Moltiplicazione");
System.out.println("D. Divisione");
operazione = oper.nextLine();
switch (operazione.toUpperCase())
{
case "A":
Result = EseguiOperazione.somma(Num1, Num2);
break;
case "B":
Result = EseguiOperazione.sottrazione(Num1, Num2);
break;
case "C":
Result = EseguiOperazione.moltiplicazione(Num1, Num2);
break;
case "D":
Result = EseguiOperazione.divisione(Num1, Num2);
break;
default: System.out.println("Immetti un valore corretto.");
System.out.println(operazione);
}
} while(!(operazione.equalsIgnoreCase("A") || operazione.equalsIgnoreCase("B") || operazione.equalsIgnoreCase("C") || operazione.equalsIgnoreCase("D")));
System.out.println("Il risultato è: ");
System.out.println(Result);
do
{
System.out.println("Altro calcolo? ");
altro = again.nextLine();
} while(!(altro.toLowerCase().startsWith("s") || altro.toLowerCase().startsWith("n")));
}
while(altro.toLowerCase().startsWith("s"));
}
}
Nello specifico mi piacerebbe, oltre a consigli generali, sapere come evitare che all'inserimento dei valori il programma crashi se si inserisce erroneamente un valore non-integer. Ho fatto in modo che il programma sputi fuori un errore ed esca, ma non mi riesce la parte in cui propone nuovamente di inserire il valore...
Grazie a tutti in anticipo!