java中的n维数组
我在java中的数字数组中有一个数组,现在我想以线性方式打印这个数组。那么如何穿越它呢? 例如: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
快速解决方案是
数组。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第一卷描述的树结构来解决这个问题。