nextLine () не работает после цикла for - PullRequest
0 голосов
/ 30 апреля 2009

Кто-нибудь знает, почему мой nextLine() не работает после цикла for в следующем коде? Он всегда пропускает nextLine() и идет прямо к оператору if.

int[] a = new int[3]

for(int i=0; i<3;i++)
{
  a[i] = nextInt();
}

String b = nextLine();

if(b == "go")
{
  .......
}
else
{
  ..... 
}

Ответы [ 3 ]

3 голосов
/ 30 апреля 2009

Я предполагаю, что, возможно, то, что вы делаете, просит пользователя ввести целые числа и затем нажать клавишу ввода. Когда он анализирует целые числа, он просто анализирует и удаляет целые числа. Но конечно новая строка, которую они нажали, все еще находится в потоке. И затем, когда вы запрашиваете nextLine(), он сразу возвращается, потому что в потоке уже есть строка (та, которая заканчивается на новой строке, которая была нажата для целых чисел). И, возможно, вы действительно ожидали, что nextLine() будет ждать дополнительной строки после ввода целых чисел, но это не то, что происходит. Это правильно?

0 голосов
/ 30 апреля 2009

Оператор, включающий nextLine, всегда должен выполняться там (если не выдается исключение). Вы не показываете реализацию для nextLine. Вы уверены, что это не выполнено? Несколько System.err.println("blah") рассеянных может помочь.

Кстати: сравнение строк почти наверняка должно быть b.equals("go"). Если b может быть null, либо проверьте это явно, либо напишите выражение "go".equals(b).

0 голосов
/ 30 апреля 2009

Что вы подразумеваете под неработающим? Вы хотите сказать, что метод nextLine () не вызывается. Согласно вставленному коду, он будет на 100% вызывать метод nextLine ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...