#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);
}
}