【发布时间】:2014-03-04 10:47:47
【问题描述】:
我刚开始使用 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);
当我尝试运行它时,我得到以下信息:(我可以输入 x 和 y,但之后我得到了错误消息。
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)
如果有人能帮我找出错误或问题,我将不胜感激!
谢谢
氯化钠
【问题讨论】:
-
您在使用
x和y后是否正在清空缓冲区?如果没有,nextLine()将为您执行此操作,并且将为opStr分配一个空行,因此charAt(0)将引发异常。 -
另外,开头是:
String result = "Answer = " + x + "" + op + "" + y + "=" + answer; System.out.println(result);