为什么我可以为我的操作输入任何东西?

时间:2013-05-27 23:05:36

标签: java string calculator

所以我试图在java中创建一个简单的计算器,但不知道如何获取输入操作。该程序要求两个数字,然后要求操作员。当我运行它直到我进入操作类型时,一切正常。编译器只是跳过它,甚至不让我输入任何内容。有线索吗?

Scanner keyboard = new Scanner(System.in);

double x;
double y;
double sum =0;
double minus =0;
double times =0;
double divide =0;
double nCr =0;
String Op;

System.out.print("X: ");
x = keyboard.nextDouble();
System.out.print("Y: ");
y = keyboard.nextDouble();
System.out.print("Op: ");
Op = keyboard.nextLine();

3 个答案:

答案 0 :(得分:2)

尝试:

System.out.print("X: ");
x = Double.parseDouble(keyboard.nextLine());
System.out.print("Y: ");
y = Double.parseDouble(keyboard.nextLine());
System.out.print("Op: ");
op = keyboard.nextLine();

这会将您输入的数字解析为Double并阅读回车。

如果您想要错误控制(如果用户输入字符串而不是数字):

Boolean check = true;

do
{
    try
    {
        //The code to read numbers
    }
    catch(InputMismatchException e)
    {
        System.err.println("Please enter a number!");
        check = false;
    }
}
while(check == false)

答案 1 :(得分:1)

而不是

Op = keyboard.nextLine();

尝试使用

Op = keyboard.next();

看起来像nextLine();使用nextInt(),nextDouble()等方法调用时,方法会出现问题。

观察:如果单独调用nextLine(),则不会发生这种情况。

答案 2 :(得分:0)

基本上nextDouble无法识别回车。在每个nextLine之后使用nextDouble