如何在列中打印数组数据

时间:2018-11-13 05:09:26

标签: java arrays printing

我这里的代码采用两种不同的数组类型,一种是布尔型,一种是整数。我想让代码像这样

打印
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);
}

2 个答案:

答案 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]));
  }
}