0
У меня есть массив 2D-строк [3] [3], и его фактически заполнены целыми числами как строки от 1 до 9. Теперь я прошу пользователя ввести от 1 до 9 , который я заменю персонажем. Проблема в том, что даже если запись действительна, моя программа реагирует так, как будто она недействительна. Было бы лучше, если бы просто взять входные данные как строки?Признание значения в массиве
String[][] array = new String[][]{
{"1","2","3"},
{"4","5","6"},
{"7","8","9"}
};
System.out.println(Arrays.deepToString(array).replace("],", "]\n").replace(",", ""));
System.out.println("pick a number between 1 and 9:");
Xchoice = keyboard.nextInt();
while (!array[0][0].equals(Integer.toString(Xchoice)) | !array[0][1].equals(String.valueOf(Xchoice))
| !array[0][2].equals(String.valueOf(Xchoice))| !array[1][0].equals(String.valueOf(Xchoice))
| !array[1][1].equals(String.valueOf(Xchoice))| !array[1][2].equals(String.valueOf(Xchoice))
| !array[2][0].equals(String.valueOf(Xchoice))| !array[2][1].equals(String.valueOf(Xchoice))
| !array[2][2].equals(String.valueOf(Xchoice)))
{
System.out.println("Sorry wrong input, try again:");
Xchoice = keyboard.nextInt();
}
for (int i = 0 ; i<9 ; i++)
{
for (int j = 0 ; j<9 ;j++)
{
if (array[i][j].equals(String.valueOf(Xchoice)))
{
array[i][j].equals("C");
}
}
}
Что вы думаете '|' делает? –
Почему вы используете 'Integer.toString (Xchoice)' в одном случае и 'String.valueOf (Xchoice)' в другом? Почему бы вам не сохранить результат 'String.valueOf (Xchoice)' в переменной и просто повторно использовать переменную вместо вызова метода? Если вы знаете, что существует только 1-9 возможных значений, почему бы вам просто не проверить их вместо того, чтобы проходить каждую позицию в массиве? –
оператор Or, и он обязывает программу просматривать все другие возможности перед тем, как перейти к следующей строке кода. Я думал, что это безопаснее использовать, а не || –