2013-01-07 26 views

回答

4

兩個解決方案:

  • 使用toCharArray():這會返回一個char[]了,你可以使用foreach循環;
  • 使用字符串長度並結合.charAt()
+0

謝謝,這給了我一個絕妙的主意,我忘記了我可以使用.charAt()從整個字符串中獲取任何字母 –

1

Java的Scanner類對令牌,完整的輸出單位進行操作。這通常是完整的單詞,文本行,數字(整數,雙打,浮動等)。如果你想讀單個字符,你應該在一個結構使用的BufferedReader這樣

BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 

與您正在使用掃描儀對任何輸入更換System.in。然後使用char c = (char)in.read()來讀取輸入中的下一個字符。

+0

我必須使用不同的java util嗎?或者我可以只使用它進口java.util.Scanner; –

+1

你需要額外的進口。最簡單的方法是添加'import java.io. *' –

+0

導入所有的東西!哈哈,謝謝你的幫助。 –

1

如果你想字符級別的訪問權限,你可以走下面的水平,只是使用的InputStream接口:

public class Test 
{ 
    public static void main(String[] args) throws Exception 
    { 
     while (true) 
     { 
      char c = (char)System.in.read(); 
      System.out.println("[" + c + "]"); 
     } 
    } 
} 
+0

雖然這並非總是如此,對吧?例如,如果我將一個多字節的UTF-8字符發送到System.in中,它是否會被'read'調用正確解析,它只返回一個字節?這就是爲什麼BufferedReader是首選。 –

+0

這是有效的,但是當你在cmd中運行它時,它會在每個char之間的3行中放置交替的括號。 –

0
Scanner s = new Scanner(System.in); 
s.next(「.{1,}」); 

所以,你可以使用Scanner#next()方法,並通過正則表達式,僅消耗一個字符爲一個參數。
您可以使用上面的示例。