#java #arrays #multidimensional-array #user-input
Вопрос:
Попытка создать 2D-массив, который принимает входные данные пользователей для строк и столбцов. Числа внутри массива затем рандомизируются от 0 до 100. Я получаю следующую ошибку:
Введите строки для массива: 3
Введите столбцы для массива: 2
Исключение в потоке «основной» java.lang.Исключение ArrayIndexOutOfBoundsException: Индекс 3 выходит за пределы длины 3 в test2.main(test2.java:17)
Вот мой код:
import java.lang.Math;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter rows for the array: ");
int rows = scan.nextInt();
System.out.print("Enter columns for the array: ");
int columns = scan.nextInt();
int [][] myArray = new int [rows][columns];
for (rows = 0; rows < myArray.length;rows ) {
for (columns = 0; columns < myArray.length; columns )
myArray[rows][columns] = (int) (Math.random()*100);
System.out.print(myArray[rows][columns] "t");
}
}
}
Комментарии:
1. Для внутреннего цикла «столбцы < myArray.length» должно быть «столбцы
2. myArray.length возвращает количество строк. Чтобы получить количество столбцов, вам нужно получить строку и вызвать метод длины для нее. Т. е. изменить
for (columns = 0; columns < myArray.length; columns )
наfor (columns = 0; columns < myArray[0].length; columns )
3. Спасибо вам обоим за ответы, я изменил внутренний цикл на то, что вы оба предложили. Но я все равно получаю ту же ошибку.
Ответ №1:
Вы должны использовать отдельные переменные для запуска циклов.
public class Random {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Enter rows for the array: ");
int rows = scan.nextInt();
System.out.print("Enter columns for the array: ");
int columns = scan.nextInt();
int[][] myArray = new int[rows][columns];
for (int row = 0; row < rows; row ) {
for (int col = 0; col < columns; col ) {
myArray[row][col] = (int) (Math.random() * 100);
System.out.print(myArray[row][col] "t");
}
}
}
}
Комментарии:
1. Спасибо, ваше решение сработало!