Я должен сделать простой калькулятор, который запрашивает допустимый оператор и останавливается, когда оператор является символом 'S'.Затем он запрашивает 2 числа для расчета.При первом вычислении он работает без ошибок, но как только он пытается запросить следующий оператор, я получаю следующую ошибку:
Исключение в потоке "main" java.lang.StringIndexOutOfBoundsException: String index outдиапазона: 0 в java.lang.String.charAt (String.java:658) в Main.main (Main.java:16)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean geldigeOperator;
double getal1;
double getal2;
char operator;
do {
System.out.print("Operator (S = stoppen): ");
String s = input.nextLine();
//pakt het eerste character van de string die is ingevoerd door de gebruiker
operator = s.charAt(0);
geldigeOperator = isGeldigeOperator(operator);
if (!geldigeOperator) {
System.out.println("Operator is ongeldig");
System.out.println("");
} else {
System.out.print("Eerste getal: ");
getal1 = input.nextDouble();
System.out.print("Tweede getal: ");
getal2 = input.nextDouble();
printBerekening(operator, getal1, getal2);
System.out.println();
}
} while (!(operator == 'S'));
}
public static boolean isGeldigeOperator(char karakter) {
if (karakter == '+' || karakter == '-' || karakter == '*' || karakter == '/' || karakter == '%') {
return true;
} else {
return false;
}
}
public static void printBerekening(char operator, double getal1, double getal2) {
double result = 0;
switch(operator) {
case '+':
result = getal1 + getal2;
System.out.println(getal1 + " + " + getal2 + " = " + result);
break;
case '-':
result = getal1 - getal2;
System.out.println(getal1 + " - " + getal2 + " = " + result);
break;
case '*':
result = getal1 * getal2;
System.out.println(getal1 + " * " + getal2 + " = " + result);
break;
case '/':
result = getal1 / getal2;
System.out.println(getal1 + " / " + getal2 + " = " + result);
break;
case '%':
result = getal1 % getal2;
System.out.println(getal1 + " % " + getal2 + " = " + result);
break;
}
}
}
Рабочий код должен давать следующие результаты: