2014-12-12 127 views
0

我正在寫一個簡單的代碼,它將掃描器讀取的輸入保存到變量word中。 創建一個單獨的方法需要使用該字符串並將所有字母轉換爲'?'。標記。但是,在空間中應該有一個空間。 問題是,我每次運行此代碼時,都停在空間處。For循環不循環我的else語句(Java)?

這裏是我的代碼:

import java.util.Scanner; 

public class commonPhrase { 
    public static void main(String[] args){ 
     Scanner input = new Scanner(System.in); 
     String word; 
     System.out.print("Welcome to the Guessing Game."); 
     System.out.println(""); 
     System.out.println("Please enter a common phrase"); 
     word = input.next(); 
     createTemplate(word); 
    } 
    public static String createTemplate(String word) { 
     String sPhrase = ""; 
     for (int i=0; i < word.length(); i++) { 
      if (word.charAt(i) == ' '){ 
       sPhrase += " "; 
      } 
      else { 
       sPhrase += "?";     
      } 
     } 
     System.out.println(sPhrase); 
     return sPhrase; 
    } 
} 

這裏是它的一個樣本運行:

歡迎猜謎遊戲。
請輸入一個常用短語。
爲什麼不添加空格!!!!!!!
???

回答

4

您在Scanner打電話next(),但這種方法抓住下一個標記,默認情況下它是由空格分隔標記。你只收集了一個詞。

改爲調用nextLine()來抓取整行的文本。

word = input.nextLine(); 

與修復上面的示例運行:

Welcome to the Guessing Game. 
Please enter a common phrase 
Stack Overflow 
????? ???????? 
+0

哇,到底如何做我錯過。 謝謝你太多 – 2014-12-12 23:25:11

+0

@izzy,因爲你從來沒有讀過[Scanner]的javadoc(http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html)。 – 2014-12-12 23:29:21

+0

@izzystreaks請接受答案。 – eckes 2014-12-12 23:34:18