2013-12-22 128 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