2016-11-21 4 views
1

Я пытаюсь печать заданной строки символ на гольца:печать символов в Java

public static void main(String[] args) { 
    char c; 
    Scanner scaner = new Scanner(System.in); 
    int length = scaner.next().length(); 
    System.out.println(length); 
    int i = 0; 

    while (i < length) { 
     c = scaner.next().charAt(i); 
     System.out.println(c); 
     i++; 
    } 
} 

После того, как этот код достиг int length = scaner.next().length(); не продолжать. Что вызывает это?

+1

Он не перейдет к следующей строке, пока вы не наберете что-нибудь. – 4castle

ответ

4

Вы должны сохранить отсканированное значение во временной переменной.

char c; 
Scanner scaner = new Scanner(System.in); 

// Storing scanned value 
String nextStr = scaner.next(); 

int length = nextStr.length(); 
System.out.println(length); 

int i = 0; 
while(i < length){ 
    c = nextStr.charAt(i); 
    System.out.println(c); 
    i++; 
} 

В исходном коде вы звоните next раз в цикле, но это не возвращает исходное отсканированное значение, но в следующей строке ввода.

+0

По словам автора, это не проблема. Код останавливается после того, как он удаляет 'int length = scaner.next(). Length();'. – Seth

+0

@Seth. Вы написали что-то на консоли ввода команд? –

1

Вам нужно ввести что-то после вызова next().

Как дополнение также ответ Александра.

Линия: int length = scaner.next().length(); получает следующую строку и затем проверяет длину. Итак, у вас уже есть следующая строка, и вызов next() снова запрашивает разные входные данные.

Именно поэтому вы всегда должны хранить возвращаемое значение next() в переменной!

Смежные вопросы