Java 如何检查二维阵列中的所有线是否具有相同的大小

Java 如何检查二维阵列中的所有线是否具有相同的大小,java,arrays,Java,Arrays,我有一个奇特的2D字符数组,里面有这样的东西: WWWSWWWW\n WWW_WWJW\n W___WWWW\n __WWWWWW\n W______W\n WWWWWWEW\n 我需要编写一个异常,当读取此文件时,它会检查所有行是否具有相同的长度,如果没有,它会返回一个自定义异常 这是我现在拥有的一些东西 for (int i = 0; i < contalinhas; i++) { for (int j = 0; j < linelenght; j++) {

我有一个奇特的2D字符数组,里面有这样的东西:

WWWSWWWW\n
WWW_WWJW\n
W___WWWW\n
__WWWWWW\n
W______W\n
WWWWWWEW\n
我需要编写一个异常,当读取此文件时,它会检查所有行是否具有相同的长度,如果没有,它会返回一个自定义异常

这是我现在拥有的一些东西

for (int i = 0; i < contalinhas; i++) {
        for (int j = 0; j < linelenght; j++) {
            System.out.print(linhaslidas[i].charAt(j));
            storelab[i][j] = linhaslidas[i].charAt(j);
            String linha = linhaslidas[i].get
            //builder.append(storelab[i][j]);
            //builder.toString();
            //System.out.print(builder);

            if (storelab[i][j] != ('S') && storelab[i][j] !=  ('W') && storelab[i][j] !=  ('_') && storelab[i][j] !=  ('E')) {
                throw new MazeFileWrongChar(i,j);
for(int i=0;i
正如您所看到的,我已经有了一个“If”作为另一个异常(基本上是限制允许的字符类型),所以我想做一些类似的事情,遍历数组并计算每行的长度。如果它检测到至少一个大小差异,则会发生异常

问题是,我不知道如何编码它,因为我使用的是数组而不是字符串(例如,不同的方法)


有什么帮助吗?

您可以运行数组的第一个索引并比较数组的大小:

int initialLen = storelab[0].length;

// Iterate from index 1, as we already got 0
for (int i = 1; i < contalinhas; i++) {
    int currLen = storelab[i].length;
    if (initialLen != currLen) {
        throw new SomeException();
    }
}

您可以运行数组的第一个索引并比较数组的大小:

int initialLen = storelab[0].length;

// Iterate from index 1, as we already got 0
for (int i = 1; i < contalinhas; i++) {
    int currLen = storelab[i].length;
    if (initialLen != currLen) {
        throw new SomeException();
    }
}

您可以使用以下示例:

public class ExampleStrings {

    public static void main(String[] args) {
        String[] valid = {"aaa", "bbb", "ccc"};
        String[] invalid = {"aaa", "bbb", "1ccc"};

        // will pass with no exception
        allTheSameLength(valid);

        // will throw an exception with appropriate message
        allTheSameLength(invalid);
    }

    private static void allTheSameLength(String[] arr) {
        if (arr == null || arr.length == 0) {
            return; // or false - depends on your business logic
        }

        // get length of first element
        // it is safe to do because we have previously checked
        // length of the array
        int firstSize = arr[0].length();

        // we start iteration from 'second' element
        // because we used 'first' as initial
        for (int i = 1; i < arr.length; i++) {
            if (arr[i].length() != firstSize) {
                throw new IllegalArgumentException("String array elements have different sizes"); // or throw exception
            }
        }

    }

}
公共类示例字符串{
公共静态void main(字符串[]args){
字符串[]有效={“aaa”、“bbb”、“ccc”};
字符串[]无效={“aaa”、“bbb”、“1ccc”};
//将毫无例外地通过
所有相同长度(有效);
//将抛出包含适当消息的异常
所有相同长度(无效);
}
私有静态void所有相同长度(字符串[]arr){
如果(arr==null | | arr.length==0){
return;//或false-取决于您的业务逻辑
}
//获取第一个元素的长度
//这样做是安全的,因为我们之前已经检查过
//数组的长度
int firstSize=arr[0]。长度();
//我们从“第二个”元素开始迭代
//因为我们用“first”作为首字母
对于(int i=1;i

传递
null
或空参数是安全的。

您可以使用以下示例:

public class ExampleStrings {

    public static void main(String[] args) {
        String[] valid = {"aaa", "bbb", "ccc"};
        String[] invalid = {"aaa", "bbb", "1ccc"};

        // will pass with no exception
        allTheSameLength(valid);

        // will throw an exception with appropriate message
        allTheSameLength(invalid);
    }

    private static void allTheSameLength(String[] arr) {
        if (arr == null || arr.length == 0) {
            return; // or false - depends on your business logic
        }

        // get length of first element
        // it is safe to do because we have previously checked
        // length of the array
        int firstSize = arr[0].length();

        // we start iteration from 'second' element
        // because we used 'first' as initial
        for (int i = 1; i < arr.length; i++) {
            if (arr[i].length() != firstSize) {
                throw new IllegalArgumentException("String array elements have different sizes"); // or throw exception
            }
        }

    }

}
公共类示例字符串{
公共静态void main(字符串[]args){
字符串[]有效={“aaa”、“bbb”、“ccc”};
字符串[]无效={“aaa”、“bbb”、“1ccc”};
//将毫无例外地通过
所有相同长度(有效);
//将抛出包含适当消息的异常
所有相同长度(无效);
}
私有静态void所有相同长度(字符串[]arr){
如果(arr==null | | arr.length==0){
return;//或false-取决于您的业务逻辑
}
//获取第一个元素的长度
//这样做是安全的,因为我们之前已经检查过
//数组的长度
int firstSize=arr[0]。长度();
//我们从“第二个”元素开始迭代
//因为我们用“first”作为首字母
对于(int i=1;i

传递
null
或空参数是安全的。

看起来您已经有了
linelength
用于循环j。那么,为什么不
if(linhaslidas[i].length!=linelength)抛出新的mazezeErrorException()
看起来您已经有了
linelength
用于循环j。那么,如果(linhaslidas[i].length!=linelength)抛出新的MazeSizeErrorException();