Я пытаюсь использовать одну строку пользовательского ввода для заполнения двух разных 2d массивов. Один из них является String, а другой - int - PullRequest
0 голосов
/ 27 октября 2018

Я создаю проект бегун лабиринт для школы. Пользователь определяет длину и ширину массива, а затем вводит значения опасности в указанный массив. Я прошу пользовательский ввод в одну строку; группа целых чисел, разделенных пробелами, представляющими значения опасности. Затем пользователь решает, с чего начать, отмеченный *. После этого ИИ решает, какая из координат вокруг него имеет наименьшую «опасность», и затем перемещается туда, стараясь не двигаться в координате, в которой он уже находился.

Я использую цикл for для заполнения двух двумерных массивов. Один из них String[][], а другой int[][]. Причина этого в том, что я использую String[][] для печати, поскольку мне нужно изменить один из int s на *, чтобы отметить местоположение пользователя. Я использую int[][], чтобы сделать математику, так как я могу использовать сравнения (<, > и т. Д.), Чтобы решить, куда двигаться. Я не могу заставить циклы for использовать только пользовательские вводы один раз. Пользователь должен был бы ввести свои предпочтительные значения опасности дважды, чтобы код продолжил работу. Любой совет?

    for(int i = 0; i < row; i++)    //for loop to repeat question for how ever many rows
    {
        System.out.print("Enter the danger in row " + i + ", seprated by spaces: " );   //what's the danger of this row
        for(int j = 0; j < column; j ++)    //for every row, column space
        {
            mazeMath[i][j] = keyboard.nextInt();
            mazePrint[i][j]=keyboard.next();
        }
    }

Например: если пользователь решит, что в массиве 7 столбцов; пользователь должен будет ввести свои предпочтительные значения опасности дважды, по 7 раз каждый. Я предполагаю, что это должно заполнить оба массива, но я не знаю, как решить проблему.

Спасибо!

Hunter

1 Ответ

0 голосов
/ 27 октября 2018

Надеюсь, я вас правильно понял: в той части кода, которую вы разместили, пользователь должен вводить только значения «опасности», такие как: «3 2 4 5», на этом этапе не вводится «*».

Если вы хотите сохранить входные данные один раз в массиве String и, кроме того, в массив int, вы можете попытаться сделать это, используя только один пользовательский ввод в строку:

Сначала прочитайте как String, а затем проанализируйте это String до Integer.

    for (int i = 0; i < row; i++)    //for loop to repeat question for how ever many rows
    {
        System.out.print("Enter the danger in row " + i + ", seprated by spaces: ");   //what's the danger of this row
        for (int j = 0; j < column; j++)    //for every row, column space
        {
            mazePrint[i][j] = keyboard.next();
            mazeMath[i][j] = Integer.parseInt(mazePrint[i][j]);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...