gpt4 book ai didi

java - 初学者尝试编写一个简单的计算器

转载 作者:行者123 更新时间:2023-12-01 07:08:05 25 4
gpt4 key购买 nike

我刚刚开始使用 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)

如果有人能帮助我找到错误或问题,我将非常感激!

谢谢

氯化钠

最佳答案

nextDouble() 处理行尾。所以当你调用nextLine()时同样,它会将您之前输入的 enter (\n) 作为输入。因此,它会跳过实际输入并吞掉 nextLine() 错过的先前输入中的 \n。您应该在真正的 nextLine() 之前调用另一个 nextLine() (这样它就会吞掉 \n)。

如果您不想这样做,则应该构造另一个 Scanner 而不是使用相同的对象。

这就是你 StringIndexOutOfBoundsException 的原因, opStr 此时只是一个 \n

关于java - 初学者尝试编写一个简单的计算器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com