2011-10-02 86 views
-2

我是java的新手,nextLine();不能工作一次,而且其他時間都是這樣。我很困惑:(我用eclipse的情況下,你需要知道Java中意外的nextLine()行爲

package tuna; 
    import java.util.Scanner; 

    public class Calculater { 
     public static void main (String args []) { 
      Scanner uno = new Scanner(System.in); 
      System.out.println("How many differant numbers do you want to use? (up to four, minimum two)"); 
      double two = uno.nextDouble(); 
      if (two == 2){ 
       System.out.println("2"); 
       System.out.println("Enter first number: "); 
       double fnum = uno.nextDouble(); 
       System.out.println(fnum); 
       System.out.println("Enter second number: "); 
       double snum = uno.nextDouble(); 
       System.out.println(snum); 
       System.out.println("Enter number operation (Say plus, minus, divide or times. No capitials please)"); 
       String op = uno.nextLine(); 

上述uno.nextLine不起作用爲什麼

if (op.equals("plus")){ 
         System.out.println(fnum + snum); 

        } 


       } 
       double three; 
       double four; 



      } 



    } 

編輯:。。?我的意思是什麼它不起作用「是在」輸入數字操作(說出加號,減號,除數或時間,沒有首字母大寫)「之後輸出,我不能輸入任何內容。當你運行它時,說明有多少個數字我輸入第一個數字,然後輸入第一個數字,然後輸入第二個數字,然後輸入第二個數字,我輸入第一個數字,然後輸入數字,然後輸入數字,這不會讓你輸入即使有nextLine();在其中即如果你添加nextLine();在那裏你可以輸入,但如果你輸入plus,什麼都不會發生,它應該在哪裏打印第一個數字加上第二個數字。

+1

什麼不行? – MasterCassim

+2

我可以向你保證它「儘可能地運作」,因爲成千上萬的用戶可以確認。如果這不起作用,那可能是你做錯了事。 – Guillaume

+0

對不起,我澄清了我的意思 - 請參閱編輯。 – user974906

回答

0

如果你輸入:

3.5<enter> 
2<enter> 
divide<enter> 

然後uno.nextDouble();消耗3.5和葉

<enter> 
2<enter> 
divide<enter> 

然後uno.nextDouble();消耗<enter>2和葉

<enter> 
divide<enter> 

下一頁uno.nextLine();只是消耗<enter>。您需要再次撥打uno.nextLine();才能使用剩餘的divide<enter>

+0

哦,好吧。我認爲它只在輸入時讀取輸入,謝謝! – user974906

0

您已經閱讀後您從線想要什麼,你需要調用nextLine()來獲得剩餘的行(即使它是空的)

+0

double two = uno.nextDouble();工作正常,但 – user974906