2016-11-23 46 views
0

我有这样阅读java中像C++字符?

... 
... 
..# 

如果c中读取输入++它会像:

int main() { 
    char c; 

    int n = 9; 

    while(n--) { 
     cin >> c; 
    } 
    return 0; 
} 

但在Java中我曾尝试这样做:

public static void main(String args[]) { 

    Scanner s = new Scanner(System.in); 
    int n = 9; 
    char c; 
    while(n--) { 

     c = s.next().chartAt(0); 

    } 

} 

它跳过点,我意味着它只读取每行的第一个点。

每个点之间没有空格。

+1

实际上,C++代码不会读取所有数据。您忘记了换行符。另外,我建议你回去阅读Javadoc for'Scanner#next()'。 –

+1

使用'readLine()'读取整行,然后通过调用'toCharArray()'获得一个字符数组' – TheLostMind

+1

'java Scanner'的第一个Google结果:https://docs.oracle.com/javase/7/docs /api/java/util/Scanner.html *扫描程序使用分隔符模式将输入分为标记,默认情况下,分隔符与空白匹配。然后可以使用各种下一个方法将生成的标记转换为不同类型的值。*为什么不使用System.in.read – TungstenX

回答

0

当我在很久以前学习Java,我一直用这个方法来读取单个字符:

char c = s.findWithinHorizon(".", 0).charAt(0); 

其中s是扫描仪。

经过一番测试,我发现这不会读新的行字符!所以这段代码有效!

String input = "...\n...\n..#"; 
Scanner s = new Scanner(input); 
for (int i = 0 ; i < 9 ; i++) { 
    char c = s.findWithinHorizon(".", 0).charAt(0); 
    // do whatever you want with c here 
}