Ввод чисел пользовательского ввода в 2D-массив для формирования 4 столбцов с 3 строками

#java #multidimensional-array

#java #многомерный массив

Вопрос:

Я работаю над задачей из двух частей, где первая часть заключается в создании массива из 3 строк и 4 столбцов, а затем пользователь вводит 4 числа, чтобы составить первый столбец первой строки. итак, если пользователь вводит 1,2,3,4, то массив должен распечатать: (0 просто пустой для второй части задачи.

 1  2  3  4
0  0  0  0
0  0  0  0
  

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

Вот мой код:

 import java.util.Scanner;

public class multipleElements {
    public static void main(String[] args) {
        //set up the array and assign variable name and table size
        int[][] startNum = new int[3][4];

        //set user input variable for the array
        Scanner userInput = new Scanner(System.in);
        for (int i = 0; i < startNum.length; i  ) {
            //get user input
            System.out.print("please enter your value: ");

            //push into the array
            String inputValue = userInput.nextInt();
            startNum[i][0] = inputValue;
            startNum[i][0] = userInput
        }
    }
}
  

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

 1  2  3  4
2  4  6  8
3  6  9  12
  

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

Комментарии:

1. Должен ли тип входного значения быть целым?

2. Извините, я не понимаю, что вам нужно… 1) вы говорите, что у вас есть 3 строки и 4 столбца input 4 numbers to make up the first column of the first row , но первый столбец первой строки — это одно число. 2) Затем вы вводите пример, в котором эти 4 числа идут в первой строке, но в вашем коде вы вводите 3 числа первого столбца… Не могли бы вы быть более ясными, пожалуйста?

3. @DeepakPatankar он все еще выдает мне ошибку для Integer inputValue = userInput.nextInt(); , где говорится «Невозможно вызвать nextInt () для примитивного типа int» — я не совсем уверен, что это значит.

4. @Miguel — спасибо, что уловил это. Здесь я работаю на перегаре — я имел в виду, что 4 числа, которые пользователь вводит, должны составлять первую строку, а не столбец. в коде [3][4] 3 строки и 4 столбца

5. Вы на правильном пути. Но помните, что строки являются первым измерением (вот почему вы инициализировали массив с помощью new int[3][4] , а не new int[4][3] ). Итак, чтобы заполнить верхнюю строку, вы хотите запустить свой цикл от 0 до startNum[0].length (который будет отсчитывать столбцы) и присвоить входные значения startNum[0][i] .

Ответ №1:

Пожалуйста, попробуйте этот код:

 public static void main(String[] args) {
    //set up the array and assign variable name and table size
    int[][] startNum = new int[3][4];

    //set user input variable for the array
    Scanner userInput = new Scanner(System.in);

    for (int i = 0; i < startNum[0].length; i  ) {
        System.out.print("please enter your value: ");
        int inputValue = userInput.nextInt();
        startNum[0][i] = inputValue;
    }

    for (int i = 1; i < startNum.length; i  ) {
        for (int j = 0; j < startNum[0].length; j  ) {
            startNum[i][j] = (i   1) * startNum[0][j];
        }
    }
}
  

В первом цикле вы получаете значения от пользователя и устанавливаете первую строку 2d-массива.

Во втором цикле for (2 fors) вы устанавливаете значения для 2-го и 3-го циклов для каждого столбца из первой строки. Вот почему первый цикл for начинается с i = 1, а второй цикл for начинается с j = 1.

Ответ №2:

 for (int i = 0; i < startNum[0].length; i  ) {
    // get user input
    System.out.print("please enter your value: ");

    // push into the array
    int inputValue = userInput.nextInt(); // <-- assign to an int value
    // assigns the user input to the columns of 0th row
    startNum[0][i] = inputValue; 

    //startNum[i][0] = userInput // <-- not required
}

for (int i = 1; i < startNum.length; i  ) {
    for (int j = 0; j < startNum[0].length; j  ) {
        // starting from 1st row calculate the values for all the rows
        // for a column and then move on to next column once finished
        startNum[i][j] = startNum[0][j] * (i   1); 
    }
}