我这里的代码采用两种不同的数组类型,一种是布尔型,一种是整数。我想让代码像这样
打印marked edgeTo
------ --------
true 2
true 0
true 0
true 5
true 3
true 0
我当前正在使用foreach循环来打印数据,但无法获取edgeTo的数据(2 0 0 5 3 0)在其标题edgeTo下方及其相应的标记布尔值对面进行打印。关于我在做什么错的任何建议吗?这是我到目前为止的代码片段
System.out.println("marked edgeTo");
System.out.println("------- --------");
for (boolean el : bob.marked) {
System.out.println(el);
}
for (int el : bob.edgeTo) {
System.out.println(el);
}
答案 0 :(得分:1)
如果两个数组的长度相同,则可以使用1个循环
System.out.println("marked\tedgeTo");
System.out.println("-------\t------");
for (int i = 0; i < bob.marked.length;i++) {
System.out.println(String.valueOf(bob.marked[i]) + "\t" + String.valueOf(bob.edgeTo[i]));
}
答案 1 :(得分:1)
如果数组的长度不同:
System.out.println("marked edgeTo");
System.out.println("------- --------");
int lesserArr = Math.min(bob.marked.length, bob.edgeTo.length);
for (int i = 0; i < lesserArr;i++) {
System.out.println(String.valueOf(bob.marked[i]) + "\t" + String.valueOf(bob.edgeTo[i]));
}
for (int j = 0;j < Math.abs(bob.marked.length-bob.edgeTo.length); j++) {
if (bob.marked.length < bob.edgeTo.length)
System.out.println("\t\t" + String.valueOf(bob.edgeTo[lesserArr + j]));
else
System.out.println(String.valueOf(bob.marked[lesserArr + j]));
}
}