Witajcie.
Zamiast wyświetlić błąd w konsoli, gdy coś jest nie tak, mnie przenosi do zakładki debug. Kiedys to dzialało normalnie a teraz Eclipse świruje.
Drugi mój problem to gdy dziele coś przez zero to wyświetla mi w konsoli infinity, a nie wychwytuje błędu tak jak bym chciał tutaj w programie.
Pozdrawiam.
package kalkulatorpack;
import java.util.InputMismatchException;
import java.util.Scanner;
public class kalkulator {
public static void main(String[] args) {
float a = 0; // I zmienna
float b = 0; // II zmienna
String op = ""; // operator
Scanner sc = new Scanner(System.in);
boolean error = true;
while (error) {
try {
System.out.println("Podaj pierwszą liczbe zmiennoprzecinkową:");
a = sc.nextFloat();
sc.nextLine();
System.out.println("Podaj drugą liczbe zmiennoprzecinkową");
b = sc.nextFloat();
sc.nextLine();
System.out.println("Co chcesz zrobic?");
System.out.println("Dodac(+), odjac(-), pomnozyc(*),podzielic(/)?");
op = sc.nextLine();
error = false;
} catch (InputMismatchException ex) {
System.out.println("Podaleś bledna liczbe");
ex.printStackTrace();
} catch (ArithmeticException ex) {
System.out.println("Pamietaj cholero nigdy nie dziel przez zero");
ex.printStackTrace();
} finally {
sc.nextLine();
}
}
sc.close();
switch (op) {
case "+":
//System.out.println(dodaj(a, b));
System.out.println(a+b);
break;
case "-":
System.out.println(a-b);
//System.out.println(odejmij(a, b));
break;
case "/":
System.out.println(a/b);
//System.out.println(podziel(a, b));
break;
case "*":
System.out.println(a*b);
//System.out.println(razy(a, b));
break;
default:
System.out.println("Blad switch");
}
}
public static float dodaj(float a, float b) {
return a + b;
}
public static float odejmij(float a, float b) {
return a - b;
}
public static float podziel(float a, float b) {
return a / b;
}
public static float razy(float a, float b) {
return a * b;
}
}