2015-11-11 3 views
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"); 
        } 
       } 
      } 
+1

Что вы думаете '|' делает? –

+0

Почему вы используете 'Integer.toString (Xchoice)' в одном случае и 'String.valueOf (Xchoice)' в другом? Почему бы вам не сохранить результат 'String.valueOf (Xchoice)' в переменной и просто повторно использовать переменную вместо вызова метода? Если вы знаете, что существует только 1-9 возможных значений, почему бы вам просто не проверить их вместо того, чтобы проходить каждую позицию в массиве? –

+0

оператор Or, и он обязывает программу просматривать все другие возможности перед тем, как перейти к следующей строке кода. Я думал, что это безопаснее использовать, а не || –

ответ

0

Попробуйте что-то вроде этого:

public class Bag1 
    { 
    static String[][] array = new String[][]{ 
    {"1","2","3"}, 
    {"4","5","6"}, 
    {"7","8","9"} 
}; 
static Scanner keyboard = new Scanner(System.in); 
public static void main(String[] args) { 

System.out.println(Arrays.deepToString(array).replace("],", "]\n").replace(",", "")); 

    boolean found = false; 

    System.out.println("pick a number between 1 and 9:"); 
    int Xchoice = keyboard.nextInt(); 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 3; j++) { 
      if(array[i][j].equals(Integer.toString(Xchoice))) { 
       array[i][j] = "C"; 
       found = true; 
       System.out.println("Replaced"); 
      } 
     } 
    } 
    while(!found) {    
     System.out.println("Sorry wrong input, try again:"); 
     Xchoice = keyboard.nextInt(); 
     for (int i = 0; i < 3; i++) { 
      for (int j = 0; j < 3; j++) { 
       if(array[i][j].equals(Integer.toString(Xchoice))) { 
        array[i][j] = "C"; 
        found = true; 
       } 
      } 
     } 
    } 
    System.out.println("Current array looks like this:"); 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 3; j++) { 
      System.out.print(array[i][j]+" "); 
      } 
     } 
    } 

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