2015-07-19 76 views
0

我在eclipse luna中製作了一個簡單的java文本遊戲。 Scanner.next()不起作用。當我運行它時,在詢問用戶輸入後,顯示一個錯誤(java.util.NoSuchElementException)。我剛剛做了些什麼愚蠢的事情嗎?設置難度不適用

while(whle) { 
     System.out.print("Where do you want to go? Enter gym, store, or mountain. "); 
     loc = goTo.next(); 
     loc = loc.toLowerCase(); 
     if(loc.equals("gym") || loc.equals("store") || loc.equals("mountain")) whle = false; 
     else { 
      System.out.println("Please enter an option. "); 
      System.out.println(); 
     } 
    } 

一切都被定義了,並且在我運行它時沒有錯誤在實際程序中彈出。

+0

使用另一個'Scanner#next'消耗行尾字符(s)。 –

+0

@Luiggi Mendozaif你的意思是'loc = goTo.next(); loc = goTo.next()'我試過了,彈出同樣的東西 –

+0

我的意思是'loc = goTo.next(); goTo.next();' –

回答

1

確保你有你的掃描儀正確初始化這樣

Scanner loc = new Scanner(System.in); //very important 

而且已經導入這個類

import java.util.Scanner; //in the begining of the source code 

它應該工作(比我認爲它是一個問題,你的IDE等, java version)

如果這沒有幫助,我用它自己運行該程序(boolean whle初始化,main方法和這樣),它產生了我相信是你想要的。

while(whle) { 
    System.out.print("Where do you want to go? Enter gym, store, or mountain. "); 
    String locstring= loc.next(); 
    if(locstring.equalsIgnoreCase("gym") || locstring.equalsIgnoreCase("store") || locstring.equalsIgnoreCase("mountain")){ whle = false;} 
    else { 
     System.out.println("Please enter an option. "); 
     System.out.println(); 
    } 
} 
+0

我沒有看到任何改善的代碼,除了圍繞'whle = false;'括號。 –

+0

我不知道「goTo」是不是掃描儀,所以我給他/她一個掃描儀的正確例子 – Mazino

+1

再一次,我沒有看到任何改進的代碼。如果你的答案的主要目的是顯示如何初始化'Scanner loc',那麼在沒有什麼改變的時候,把注意力放在那裏,而不是說*把你的代碼改成'<由OP>'發佈的相同代碼。 –