Java try catch felinmatning
Halloj!
Jag håller i skolan på att bygga en liten enkel kalkylator och det sista jag ska göra är att om jag skriver in en bokstav eller tecken istället för en siffra när den ber om ett tal ska den skicka ett felmedelande och låta användaren skriva in talet igen. Hur gör jag detta? Har förstökt med allt utom det sättet som funkar :'( så hur ska jag göra? och ni för gärna lägga in det i koden så jag verkligen förstår!
Tack på förhand
Programmet:
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Calculator {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Deklarerar nästan alla variabler
double tal1 = 0;
double tal2 = 0;
double svar = 0;
boolean go = true;
//Startar en loop som fråg början är evig
while(go==true)
{
//Välkommnar användaren och säger hur denna ska göra
System.out.print("\nVälkommen till Unknow12's räknare.\n Välj räknesätt genom att skriva * + - / eller ^\n");
//Läser av inputad variabel
Scanner input0 = new Scanner(System.in);
char satt=input0.next().charAt(0);
//Väljer if beroende på vilket alternativ användaren matade in. Siffrorna är assi kod
if(satt == 43){
//Säger åt användaren vad denna ska göra
System.out.print("Du har valt Addition \nVar vänlig skriv ett valfritt tal X (X+Y)\n");
//Scannar in talet
Scanner input2 = new Scanner(System.in);
tal1 = input2.nextDouble();
System.out.print("\nVar vänlig skriv ett valfritt tal Y (X+Y)\n");
//Tar emot nästa tal
Scanner input3 = new Scanner(System.in);
tal2 = input3.nextDouble();
//Räknar
svar = tal1 + tal2;
//Berättar svaret
System.out.println("Ditt X+Y blev "+svar);
}
//Denna fungerar på samma sätt som den ovanstående och de under förutom att det är annat räknesätt
if(satt == 45){
System.out.print("Du har valt Subration \nVar vänlig skriv ett valfritt tal X (X-Y)\n");
Scanner input4 = new Scanner(System.in);
tal1 = input4.nextDouble();
System.out.print("\nVar vänlig skriv ett valfritt tal Y (X-Y)\n");
Scanner input5 = new Scanner(System.in);
tal2 = input5.nextDouble();
svar = tal1 - tal2;
System.out.println("Ditt X-Y blev "+svar);
}
if(satt == 47){
System.out.print("Du har valt Divition \nVar vänlig skriv ett valfritt tal X (X/Y)\n");
Scanner input6 = new Scanner(System.in);
tal1 = input6.nextDouble();
System.out.print("\nVar vänlig skriv ett valfritt tal Y (X/Y)\n");
Scanner input7 = new Scanner(System.in);
tal2 = input7.nextDouble();
svar = tal1 / tal2;
//Om svaret är så stort att det inte rymms i en double eller om man får ett oändligt tal genom att t.ex. dividera med noll ska den visa felmedelande
if(svar > 999999999){
System.out.println("Något gick fel. Dividerade du med noll?");
}
System.out.println("Ditt X/Y blev "+svar);
}
if(satt == 42){
System.out.print("Du har valt Multiplikation \nVar vänlig skriv ett valfritt tal X (X*Y)\n");
Scanner input8 = new Scanner(System.in);
tal1 = input8.nextDouble();
System.out.print("\nVar vänlig skriv ett valfritt tal Y (X*Y)\n");
Scanner input9 = new Scanner(System.in);
tal2 = input9.nextDouble();
svar = tal1 * tal2;
System.out.println("Ditt X*Y blev "+svar);
}
if(satt == 94){
System.out.print("Du har valt Upphöjt till \nVar vänlig skriv ett valfritt tal X (X^Y)\n");
Scanner input10 = new Scanner(System.in);
tal1 = input10.nextDouble();
System.out.print("\nVar vänlig skriv ett valfritt tal Y (X^Y)\n");
Scanner input11 = new Scanner(System.in);
tal2 = input11.nextDouble();
//Upphöjt med
svar = Math.pow(tal1, tal2);
System.out.println("Ditt X^Y blev "+svar);
}
//Om användaren i början matar in något annat än vad man får så ska den...
if(satt != 43 && satt != 45 && satt != 47 && satt != 42 && satt != 94){
System.out.println("Något gick fel var vänlig försök igen");
}
//Frågar användaren om loopen ska startas om eller brytas
System.out.println("Vill du börja om? (y/n)");
Scanner input12 = new Scanner(System.in);
char bo=input12.next().charAt(0);
//Om användaren matar in no bryter den loopen
if(bo == 110)
{
//Bryter loopen
go = false;
//Hejdåar användaren så att denna blir glad
System.out.println("Hejdå!");
}
}
}
}
i7-4770k OC @ 4,501 Ghz
Asus Geforce GTX 1070 Strix Gaming OC @ 1900 Mhz
16 gb Corsair Vengeance Pro OC @ CL9 2133 Mhz
Samsung SSD 840 OC @ Secret Mhz ;)
Blev på något konstigt vis en mac ägare efter 15 år med windows🤔