Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的n维数组_Java_Arrays - Fatal编程技术网

java中的n维数组

java中的n维数组,java,arrays,Java,Arrays,我在java中的数字数组中有一个数组,现在我想以线性方式打印这个数组。那么如何穿越它呢? 例如: 快速解决方案是数组。deepToString(数组)快速解决方案是数组。deepToString(数组)一个简单的递归将达到以下目的: public static void main(String[] args) { // create the array: [1, [2, 3], 4] Object[] arr = new Object[3]; a

我在java中的数字数组中有一个数组,现在我想以线性方式打印这个数组。那么如何穿越它呢? 例如:


快速解决方案是
数组。deepToString(数组)
快速解决方案是
数组。deepToString(数组)
一个简单的递归将达到以下目的:

public static void main(String[] args) {

        // create the array: [1, [2, 3], 4]
        Object[] arr = new Object[3];
        arr[0] = 1;
        arr[1] = new Object[2];
        arr[2] = 4;
        ((Object[])arr[1])[0] = 2;
        ((Object[])arr[1])[1] = 3;

        // print
        printArr(arr);
    }

    // print the array in order - recursively 
    static void printArr(Object[] arr) {
        for (Object i : arr) {
            if (i instanceof Integer) {
                System.out.print(i + " ");
            }
            else {
                printArr((Object[])i);
            }
        }
    }
输出

1 2 3 4 

一个简单的递归就可以做到这一点:

public static void main(String[] args) {

        // create the array: [1, [2, 3], 4]
        Object[] arr = new Object[3];
        arr[0] = 1;
        arr[1] = new Object[2];
        arr[2] = 4;
        ((Object[])arr[1])[0] = 2;
        ((Object[])arr[1])[1] = 3;

        // print
        printArr(arr);
    }

    // print the array in order - recursively 
    static void printArr(Object[] arr) {
        for (Object i : arr) {
            if (i instanceof Integer) {
                System.out.print(i + " ");
            }
            else {
                printArr((Object[])i);
            }
        }
    }
输出

1 2 3 4 

这不是一个完美的解决方案:

您需要一个数据结构(树)来保存此数据:

public class ArrayHolder {

private boolean isLeaf;
private int number;
private List<ArrayHolder> nodes;

public ArrayHolder(int number) {
    isLeaf = true;
    this.number = number;
}

public ArrayHolder() {
    isLeaf = false;
    nodes = new ArrayList<ArrayHolder>();
}

public boolean isLeaf() {
    return isLeaf;
}

public void addNode(ArrayHolder node) {
    nodes.add(node);
}

@Override
public String toString() {
    StringBuilder sb = new StringBuilder();
    if (isLeaf) {
        sb.append(number + ",");
    } else {
        sb.append("[ ");
        for (ArrayHolder arrayHolder : nodes) {
            sb.append(arrayHolder.toString());
        }
        sb.deleteCharAt(sb.length() - 1);
        sb.append("]");
        sb.append(",");
    }

    return sb.toString();
}
}

这不是一个完美的解决方案:

您需要一个数据结构(树)来保存此数据:

public class ArrayHolder {

private boolean isLeaf;
private int number;
private List<ArrayHolder> nodes;

public ArrayHolder(int number) {
    isLeaf = true;
    this.number = number;
}

public ArrayHolder() {
    isLeaf = false;
    nodes = new ArrayList<ArrayHolder>();
}

public boolean isLeaf() {
    return isLeaf;
}

public void addNode(ArrayHolder node) {
    nodes.add(node);
}

@Override
public String toString() {
    StringBuilder sb = new StringBuilder();
    if (isLeaf) {
        sb.append(number + ",");
    } else {
        sb.append("[ ");
        for (ArrayHolder arrayHolder : nodes) {
            sb.append(arrayHolder.toString());
        }
        sb.deleteCharAt(sb.length() - 1);
        sb.append("]");
        sb.append(",");
    }

    return sb.toString();
}
}


请显示你的代码。你能告诉我们这个数组是如何定义的吗?我只有给定的信息。数组的声明方式应该和我们声明其他数组的方式一样,这应该是一个二维数组。迭代二维数组以遍历项目。它不是二维的。请显示您的代码。您能告诉我们这个数组是如何定义的吗?我只有给定的信息。数组的声明方式应该和我们声明其他数组的方式一样,这应该是一个二维数组。迭代二维数组以遍历项,而不是二维。-1实际上,此方法将嵌套数组转换为“字符串”:这意味着
[1,2,3,4]
将打印为“[1,2,3,4]”,而不是“12,3,4”@alfasin正在寻找以特定格式打印数组的方法?这就是他写的:“我想以线性方式打印此数组”@alfasin我不太确定
deepToString()
的输出是否以某种非线性方式,但我明白你的意思。-1实际上,此方法会将嵌套数组转换为“字符串”:这意味着
[1,[2,3],4]
将打印为“[1,[2,3],4]”,而不是“12,3,4”“@alfasin正在寻找以特定格式打印数组的方法?他写道:“我想以线性方式打印此数组”@alfasin我不太确定
deepToString()
的输出是否以某种非线性方式,但我明白你的意思。是的,对,Naveejr先生,我有同样的想法用Donald knuth第一卷描述的树结构来解决这个问题。是的,Naveejr先生,我有同样的想法用Donald knuth第一卷描述的树结构来解决这个问题。