Как я могу напечатать массив 1D размером 3 x 3 и как я могу иметь компьютер, проверяющий значения ГСЧ, и продолжать поиск пустого пространства? - PullRequest
0 голосов
/ 28 ноября 2018

Я уже некоторое время работаю над проектом 1D Tic Tac Toe, и я все еще плохо знаком с программированием, поэтому у меня есть пара вопросов / проблем.

  • начнем, у меня проблемы с печатью платы в виде массива 1D String.Прежде всего, настройте его в формате три в три с «пробелами», представленными как «-».

    //global variables
    
    static int ArrayLength = 9;
    
    static String[] board = new String[ArrayLength];
    
    static int maxVal = ArrayLength;
    
    
    static void PrntBoard() 
    
    {
        for (int cntr = '-'; cntr < maxVal; cntr++) 
    {
    
     System.out.println(board[cntr]);
    
    
           }
    }
    
  • У меня также возникают проблемы с моими компьютерными перемещениями, так как я продолжаю получатьошибки, когда компьютер не может обернуться вокруг массива, чтобы в конечном итоге найти пустое пространство и проверить, доступно ли пространство в первую очередь.

    static void CompMove () {

    int space = 0;
    
    //keep asking till they get an empty one
    
        //have the comp random pick a spot
        space = RNG.nextInt(9);
        //check
        while (board[space].equals('X') || board[space].equals('O'));
        {
            space = RNG.nextInt(9)-1;
    
        }
    
    
    
    //fill in the game board with the valid position
    if (board[space].equals('-')) {
        board[space].equals('O');
        PrntBoard();
    }
    int lastspace = space;
    
    }
    

Любая помощь будет принята с благодарностью, так как я все еще, честно говоря, новичок и не обладаю большими знаниями в области кодирования.Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

В первом примере у вас есть ошибка в цикле for.Должно быть:

for(int cntr=0; cntr<board.length; cntr++) {
        System.out.println(board[cntr]);
    }

В вашем случае int cntr='-' это то же самое, что и 'int cntr = 92` (потому что вы разыгрываете char' - 'в int, а char' - 'это число 92), но у вас естьинициализированный массив длиной 9 позиций.

Во втором примере вы должны удалить точку с запятой рядом с циклом while.Должно быть:

while (board[space].equals('X') || board[space].equals('O')){
        space = RNG.nextInt(9)-1;
    }

в вашем случае while (board[space].equals('X') || board[space].equals('O')); вы никогда не попадете в браслеты

0 голосов
/ 28 ноября 2018
  1. Сначала ознакомьтесь с Базовым языком Java , чтобы изучить некоторые базовые концепции.
  2. Для метода printBoard условие for должно начинаться с 0 до maxVal, вместо использования char '-', который преобразуется в int 45 , проверьте Примитивные типы данных для получения подробной информации.
  3. ДляПри использовании метода CompMove сравнение equals не выполняется, поскольку вы сравниваете String(board[space]) с Character('X'), который имеет разные типы.Обратите внимание, что 'X' отличается от "X" в Java.
  4. Чтобы заполнить игровое поле правильной позицией, board[space].equals('O'); - это не то, чтовам нужно, equals делать только сравнение, а не настройку значения.Вместо этого используйте board[space] = "O");.

Пожалуйста, попробуйте следующий код для проверки вышеуказанных пунктов.

  public static void main(String[] args) {
    System.out.println("'-' converted to int is " + (int) '-');
    System.out.println("\"X\".equals('X')? " + "X".equals('X'));
    String[] board = new String[9];
    for (int i = 0; i < 9; i++) {
      board[i] = "-";
    }
    System.out.println("Before change\t" + Arrays.toString(board));
    board[0] = "O";
    System.out.println("After change\t" + Arrays.toString(board));
  }

Наконец, пожалуйста, следуйте Java Naming Convention , имя метода и переменной должно начинаться со строчной буквы.

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