4

所以我试图用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();
4

3 回答 3

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)
于 2013-05-27T23:24:49.793 回答
1

代替

Op = keyboard.nextLine();

尝试使用

Op = keyboard.next();

看起来像 nextLine(); 当使用 nextInt()、nextDouble() 等方法调用时,方法会给您带来问题。

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

于 2013-05-29T03:48:51.093 回答
0

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

于 2013-05-27T23:22:11.707 回答