2013-12-22 109 views
0

我对Java很新,我试图做一个基本的计算器。还有另一个问题,但我改变了固定它的东西,但它仍然不起作用。这里是我的代码:Java简单的计算器错误

import java.util.Scanner; 

class HelloWorld{ 

    public static void main(String args[]) 

     int num1; 
     int num2; 
     String op; 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter your first number"); 

     num1 = input.nextInt(); 

     System.out.println("Enter your second number"); 
     num2 = input.nextInt(); 

     System.out.println("Enter the operation"); 
     op = input.nextLine(); 

     if (op.equals("*")){ 
      System.out.println("The answer is: " + (num2 * num1)); 
     } 

     if (op.equals("/")){ 
      System.out.println("The answer is: " + (num2/num1)); 
     } 

     if (op.equals("+")){ 
      System.out.println("The answer is: " + (num2 + num1)); 
     } 

     if (op.equals("-")){ 
      System.out.println("The answer is: " + (num2 - num1)); 
     } 
    } 
    } 

错误说:

Enter your first number 
Exception in thread "main" java.util.NoSuchElementException 
at java.util.Scanner.throwFor(Scanner.java:907) 
at java.util.Scanner.next(Scanner.java:1530) 
at java.util.Scanner.nextInt(Scanner.java:2160) 
at java.util.Scanner.nextInt(Scanner.java:2119) 
at HelloWorld.main(HelloWorld.java:12) 

我似乎无法找到什么是错(我有其简单的东西,我错过了)

+0

为什么你需要第二个'Scanner'?哪一行是'12'? –

+2

此错误适用于'HelloWorld'应用程序的'main()'方法。 –

+0

我不认为我这样做。我摆脱了它,但它给了我同样的错误。 – minipanda1

回答

2

你在进入?

Enter your first number 
10 
Enter your second number 
20 
Enter the operation 
* 
The answer is: 200 
+0

我不允许我输入任何内容。它立即给出错误。 – minipanda1

+0

@ user3126413你是怎么调用它的? –

+0

你说的是什么意思? – minipanda1

0

我看错唯一的事情是public **satic** void main(String args[])除此之外,它做它应该...

+0

好吧是的,这是我输入它(我在处理代码后意外删除了) – minipanda1

+0

OP说他们至少打印出第一行到控制台。如果这个'satic' /''static'是问题,程序甚至不会编译。 –

0

无论何时,你看从扫描仪的任何标记。您可以使用hasNext()方法检查它是否确实存在。所以,你可以做

对于检查整数:

if(input.hasNextInt()) 
input.nextInt() 

对于检查线路:

if(input.hasNextLine()) 
input.nextLine() 

这将摆脱NoSuchElementException

更新:

System.out.println("Enter the operation"); 
op = input.next(); //changing it to next() fixed it 

输出

run: 
    Enter your first number 
    2 
    Enter your second number 
    3 
    Enter the operation 
    * 
    The answer is: 6 
    BUILD SUCCESSFUL (total time: 6 seconds) 
+0

不是这种情况。 'Ststem.in'流总是有'next'。 –

+0

你的意思是System.in?你能解释一下吗? – Keerthivasan

+0

''hasNext()'从'System.in'中读取时总是返回'true',因为没有键盘输入文件的结尾。显然,对于'hasNextInt()'或任何其他类型特定的方法来说,情况并非如此。 –

1

我不知道你的程序甚至会编译你的方式,但这里有一个问题:

你没有用打开你main方法打开大括号。

更改此:

public static void main(String args[]) 

这样:

public static void main(String args[]) { 

当我测试你的代码,它Enter the operation后终止。然而,当我改变了这一行:

op = input.nextLine(); 

这样:

op = input.next(); 

它完美地工作。

这里是控制台输入/输出的一个例子:

Enter your first number 
10 
Enter your second number 
20 
Enter the operation 
* 
The answer is: 200