2016-11-23 12 views
0

++、それは次のようになりますCに読めば、私はjavaのような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); 

    } 

} 

それはドットをスキップし、私はつまり、各行の最初のドットだけが読み取られます。

各ドットの間にはスペースがありません。 sがスキャナである

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

:私は昔のJavaを学んでいたとき、私は常に単一の文字を読み取るために、このメソッドを使用し

+1

実際、C++コードではすべてのデータが読み込まれませんでした。改行を忘れてしまいました。また、 'Scanner#next()'のJavadocを読んでお読みになることをお勧めします。 –

+1

'readLine()'を使って行全体を読み込み、 'toCharArray()'を呼び出して文字配列を取得します – TheLostMind

+1

'java Scanner'の1番目のGoogle結果:https://docs.oracle.com/javase/7/docs /api/java/util/Scanner.html *スキャナは、デリミタパターンを使用して、その入力をトークンに分割します。デリミタパターンは、デフォルトでは空白に一致します。結果として得られるトークンは、さまざまな次のメソッドを使用してさまざまな型の値に変換できます。* System.in.readを使用しない理由 – TungstenX

答えて

0

いくつかのテストの後、私はこれが改行文字を読み取らないことを発見しました!だからこのコードは動作します!

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 
} 
関連する問題