print格式的文本2d数组

lawou6xi  于 2021-07-08  发布在  Java
关注(0)|答案(2)|浏览(315)

我一直在尝试做一个程序,只写二维数组与下列文字通过打印格式。我预期的输出应该是这样的(不要介意粗体的点,它们是用于新行的):
姓名:佛罗伦萨
电话:735-1234
地址:芝加哥

姓名:乔伊斯
电话:983-3333
地址:埃文斯顿

姓名:becca
电话:456-3322
地址:橡树公园
到目前为止这是我的代码

public static void main(String [] args){
    String[][] entry = {{"Florence", "735-1234", "Chicago"}, 
                      {"Joyce", "983-3333", "Evanston"},
                      {"Becca", "456-3322", "Oak Park"}
                    };
   for ( int i= 0; i < entry.length; i++){
       for (int q = 0; q < entry[i].length; q++){
           System.out.printf("\n%s\n%s\n%s", "Name   :   " + entry[i][q], "Tel. # :   " +entry[i][q], "Address:   " + entry[i][q]);
       }
       System.out.println();
   }
}

}
但我的输出仅显示以下内容:

姓名:佛罗伦萨
电话:佛罗伦萨
地址:佛罗伦萨
姓名:735-1234
电话:735-1234
地址:735-1234
姓名:芝加哥
电话:芝加哥
地址:芝加哥

姓名:乔伊斯
电话:乔伊斯
地址:乔伊斯
姓名:983-3333
电话:983-3333
地址:983-3333
姓名:埃文斯顿
电话:evanston
地址:埃文斯顿

姓名:becca
电话:becca
地址:贝卡
姓名:456-3322
电话:456-3322
地址:456-3322
名称:橡树公园
电话:橡树公园
地址:橡树公园
任何提示或建议将不胜感激。

5us2dqdw

5us2dqdw1#

尽管您编写的大多数代码都是正确的,但您不需要第二个for循环。下面是原因
当q=0时,您的代码正在打印
名称=条目[0][0]
电话#=条目[0][0]
地址=条目[0][0]
当q=1时,您的代码正在打印
名称=条目[0][1]
电话#=条目[0][1]
地址=条目[0][1]
当q=2时,您的代码正在打印
名称=条目[0][2]
电话#=条目[0][2]
地址=条目[0][2]
我想,你对接下来会发生什么有了一个合理的想法。上述过程持续到i<3,q<3。
这种类型的打印可以通过在代码中排除第二个for循环并添加如下内容来避免

for ( int i= 0; i < entry.length; i++){
               System.out.printf("\n%s\n%s\n%s", "Name   :   " + entry[i][0], "Tel. # :   " +entry[i][1], "Address:   " + entry[i][2]);
           System.out.println();
       }

当上述代码段运行时,您可以看到上面提到的预期输出。
当i=0时,您的代码正在打印
名称=条目[0][0]
电话#=条目[0][1]
地址=条目[0][2]
接下来的两个步骤你可以遵循我猜。
希望这有帮助。

kxeu7u2r

kxeu7u2r2#

最简单的方法就是使用 Arrays.deepToString(entry) .
但是,这样做的代价是不能在数组元素之间指定任何内容。如果你的重点是显示额外的文本,我建议其他答案已经存在。如果你的优先考虑是一个工作良好,易于理解和快速编码的解决方案,那么我的建议效果更好。

相关问题