如何比较二维锯齿状数组中某列元素的长度
How to compare the lengths of the elements in a column in a two-dimensional jagged array
我正在处理这部分代码(打印第 i 列中的元素数量)我不确定如何检查是否有任何其他列的元素数量与第 i 列中的元素数量相同,因为在我的锯齿状数组 用户不能输入包含 2 列或更多列且元素数量相同的数组。
package com.company;
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
//define / make array
int columns;
int repeat;
repeat = 0;
//take ragged array inout
do
{System.out.print("How many columns : ");
columns = input.nextInt();
// define array
int[][] raggedArray = new int[columns][];
// way to enter ragged array
for (int i = 0; i < columns; i++){
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
int rows = input.nextInt();
raggedArray[i] = new int[rows];
for (int j = 0; j < rows; j++) {
System.out.print("Enter row value for row number " + (j + 1) + " : ");
//adding the input to array
raggedArray[i][j] = input.nextInt();
}
}
// find out the number of columns
/* NEED HELP HERE to compare if there any 2 columns with the same number of elements in them / same number of rows */
int numberOfColumns = raggedArray.length;
for (int i = 0; i < numberOfColumns; i++) {
System.out.println("In the column " + i + " there are " + raggedArray[i].length + " rows");
}
} while(repeat == 99);
}
}
您可以替换这两行:
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
int rows = input.nextInt();
像这样:
for (int i = 0; i < columns; i++){
int rows;
while (true) {
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
rows = input.nextInt();
int k = 0;
for (; k < i; k++) {
if(raggedArray[k].length == rows) break;
}
if(k == i) break;
System.out.print("This number of rows has already been used.");
}
raggedArray[i] = new int[rows];
// ...
}
如果您熟悉并允许使用 Set
,代码可以稍微简化。
Set<Integer> seen = new HashSet<>();
for (int i = 0; i < columns; i++){
int rows;
while (true) {
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
rows = input.nextInt();
if(seen.add(rows)) break;
System.out.print("This number of rows has already been used.");
}
raggedArray[i] = new int[rows];
// ...
}
我正在处理这部分代码(打印第 i 列中的元素数量)我不确定如何检查是否有任何其他列的元素数量与第 i 列中的元素数量相同,因为在我的锯齿状数组 用户不能输入包含 2 列或更多列且元素数量相同的数组。
package com.company;
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
//define / make array
int columns;
int repeat;
repeat = 0;
//take ragged array inout
do
{System.out.print("How many columns : ");
columns = input.nextInt();
// define array
int[][] raggedArray = new int[columns][];
// way to enter ragged array
for (int i = 0; i < columns; i++){
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
int rows = input.nextInt();
raggedArray[i] = new int[rows];
for (int j = 0; j < rows; j++) {
System.out.print("Enter row value for row number " + (j + 1) + " : ");
//adding the input to array
raggedArray[i][j] = input.nextInt();
}
}
// find out the number of columns
/* NEED HELP HERE to compare if there any 2 columns with the same number of elements in them / same number of rows */
int numberOfColumns = raggedArray.length;
for (int i = 0; i < numberOfColumns; i++) {
System.out.println("In the column " + i + " there are " + raggedArray[i].length + " rows");
}
} while(repeat == 99);
}
}
您可以替换这两行:
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
int rows = input.nextInt();
像这样:
for (int i = 0; i < columns; i++){
int rows;
while (true) {
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
rows = input.nextInt();
int k = 0;
for (; k < i; k++) {
if(raggedArray[k].length == rows) break;
}
if(k == i) break;
System.out.print("This number of rows has already been used.");
}
raggedArray[i] = new int[rows];
// ...
}
如果您熟悉并允许使用 Set
,代码可以稍微简化。
Set<Integer> seen = new HashSet<>();
for (int i = 0; i < columns; i++){
int rows;
while (true) {
System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
rows = input.nextInt();
if(seen.add(rows)) break;
System.out.print("This number of rows has already been used.");
}
raggedArray[i] = new int[rows];
// ...
}