Вот соответствующий фрагмент кода.
public static Territory[] assignTerri (Territory[] board, String[] colors)
{
for (int i = 0; i<board.length; i++)
{
// so a problem is that Territory.translate is void fix this.
System.out.print ("What team controls ") ; Territory.translate (i) ; System.out.println (" ?") ;
boolean a = false ;
while (a = false)
{
String s = getIns () ;
if ((checkColor (s, colors)))
{
board[i].team = (returnIndex (s, colors)) ;
a =true ;
}
else
System.out.println ("error try again") ;
}
System.out.print ("How many unites are on ") ; Territory.translate (i) ; System.out.println (" ?") ;
int n = getInt () ;
board[i].population = n ;
}
return board ;
}
В качестве дополнительной информации, checkColor
просто проверяет, является ли первый аргумент, строка, строкой в одном из индексов второго аргумента, массива.
Мне кажется, что когда while
метод получает строку с клавиатуры, то только в том случае, если эта строка проверена, является истиной и while
разрешено завершать.
Вывод, который я получаю, таков:
What team controls Alaska ?
How many unites are on Alaska ?
(в конце есть пробел для ввода)
Казалось бы, это предполагает, что while
завершается до того, как ввод будет введен, поскольку первая строка текста находится внутри while
, а вторая строка текста идет после него.
Почему это происходит?