您好我遇到了这个问题,在2D数组中输入元素,其中行数已知,但列数未知。但是所有行应该具有相同数量的元素。我怎么能在java中做到这一点
像第一个输入一样是行数。然后为矩阵的每一行输入一行。每行包含相同数量的列,每列用空格分隔。我尝试了这个,但它无法正常工作
System.out.println("Enter the number of rows");
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int [] [] matrix = new int [N][N];
int row=0;
int col =0;
while(sc.hasNextInt() && N<=col)
{System.out.println("Enter the elements");
matrix[row][col++]=sc.nextInt();
col++;
}
for(int i=1; i<=N; i++)
{
for(int j =0; j<=col;j++)
{System.out.println("enter the elements");
matrix[i][j]=sc.nextInt();
}
}
答案 0 :(得分:1)
如果您不知道列数,可以执行以下操作:
Scanner sc = new Scanner(System.in);
int rows = sc.nextInt();
sc.nextLine(); // nextInt() didn't consume the newline so we do it here
int[][] matrix = new int[rows][];
for (int i = 0; i < rows; i++) {
String line = sc.nextLine();
String[] valueStrings = line.split("\\s+");
matrix[i] = new int[valueStrings.length];
for (int j = 0; j < valueStrings.length; j++) {
matrix[i][j] = Integer.parseInt(valueStrings[j]);
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print("" + matrix[i][j] + " ");
}
System.out.println();
}
输入:
3
1 2 3 4
5 6 7 8
9 0 1 2
输出:
1 2 3 4
5 6 7 8
9 0 1 2
编辑:修复了错误的嵌套
答案 1 :(得分:0)
您似乎想要读取具有已知行数和列数的矩阵。 这应该这样做:
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[][] matrix = new int[N][N];
System.out.println("Enter the elements");
for (int row = 0; row < N; ++row) {
for (int col = 0; col < N; ++col) {
matrix[row][col] = sc.nextInt();
}
}
在您的尝试中,您需要更多地思考为什么要增加col两次,为什么要比较N或者等于N以及for循环从1开始而不是0的原因。