Я только начал Java и пытаются программировать простой калькулятор:начинающие пытаются программировать простой калькулятор
Я попытался следующий:
double x, y; //inputs
Scanner sc = new Scanner(System.in);
System.out.println("x?");
x = sc.nextDouble();
System.out.println("y?");
y = sc.nextDouble();
double answer = 0;
System.out.println("Operation type: (+,-,*,/)");
String opStr= sc.nextLine();
char op = opStr.charAt(0);
switch(op)
{
case '+':
answer=x+y;
break;
case '-':
answer=x-y;
break;
case '*':
answer=x*y;
break;
case '/':
if (y==0)
{
System.out.println("Error, can't divide by zero");
}
else
{
answer=x/y;
}
break;
default: System.out.println("Unkown operation");
} // switch end
System.out.println("answer = " +x+op+y+"=" + answer);
Когда я пытаюсь запустить его, я получаю следующее: (я могу ввести х и у, но после этого я получаю сообщение об ошибке.
Operation type: (+,-,*,/)
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:686)
at edf_1.EDF_1.main(EDF_1.java:170)
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
Был бы очень признателен, если кто-нибудь может помочь мне найти ошибку или вопрос!
Благодаря
NAC
Вы опорожняете буфер после принятия 'x' и' y'? Если нет, 'nextLine()' сделает это для вас, и пустая строка будет назначена на 'opStr', поэтому' charAt (0) 'запустит исключение. – BackSlash
См. Http://stackoverflow.com/questions/18163518/while-loop-executes-only-once/18163608#18163608 – Nayuki
Также начинайте с: 'String result =" Answer = "+ x +" "+ op + "" + y + "=" + answer; System.out.println (результат); ' – BlackBox