【问题标题】:Print format for 2D arrays with text带有文本的二维数组的打印格式
【发布时间】:2021-03-09 23:51:46
【问题描述】:

我一直在尝试制作一个程序,该程序将通过打印格式编写带有以下文本的二维数组。我期望的输出应该是这样的,不要介意它们用于新行的粗体:

Name : Florence
Tel. # : 735-1234
Address: Chicago
*
Name : Joyce
Tel. # : 983-3333
Address: Evanston
*
Name : Becca
Tel. # : 456-3322
Address: Oak Park

这是我目前的代码:

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();
    }
}

但我的输出只显示了这一点:

*
Name   :   Florence
Tel. # :   Florence
Address:   Florence
Name   :   735-1234
Tel. # :   735-1234
Address:   735-1234
Name   :   Chicago
Tel. # :   Chicago
Address:   Chicago
*
Name   :   Joyce
Tel. # :   Joyce
Address:   Joyce
Name   :   983-3333
Tel. # :   983-3333
Address:   983-3333
Name   :   Evanston
Tel. # :   Evanston
Address:   Evanston
*
Name   :   Becca
Tel. # :   Becca
Address:   Becca
Name   :   456-3322
Tel. # :   456-3322
Address:   456-3322
Name   :   Oak Park
Tel. # :   Oak Park
Address:   Oak Park

任何提示或建议将不胜感激。

【问题讨论】:

  • 你不需要内部循环,只需要一个循环来遍历条目;您要打印的数据将是entry[i][0]entry[i][1]entry[i][2
  • 我们将不胜感激任何提示或建议 学习使用调试器。如果您使用的是 IDE,例如 Eclipse,那么它应该包含一个调试器。
  • @KevinAnderson 嗨!是的,基本上第二个括号是固定的,for 循环仅用于迭代第一个括号。非常感谢您的建议!

标签: java arrays string multidimensional-array printf


【解决方案1】:

虽然您编写的大部分代码都是正确的,但您不需要第二个 for 循环。以下是为什么

当 q=0 时,您的代码正在打印
名称 = 条目[0][0]
电话。 #= 条目[0][0]
地址 = entry[0][0]
当 q=1 时,您的代码正在打印
名称 = 条目[0][1]
电话。 #= 条目[0][1]
地址 = entry[0][1]
当 q=2 时,您的代码正在打印
名称 = 条目[0][2]
电话。 #= 条目[0][2]
地址 = 条目[0][2]

我想,在这里你对接下来会发生什么有了一个很好的了解。上述过程一直持续到 i 只需在代码中排除第二个 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();
       }

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

希望这有帮助。

【讨论】:

  • 您好!今天刚起床停课,所以我很容易赶上。哦,是的,这很有意义。基本上第二个括号已经固定,i 的迭代将跟随 for 循环。非常感谢您的建议!
【解决方案2】:

最简单的方法是使用Arrays.deepToString(entry)

但是,这样做的代价是您无法在数组元素之间指定任何内容。如果您的首要任务是显示附加文本,我建议已经存在其他答案。如果您的首要任务是一个运行良好、易于理解且快速编写代码的解决方案,那么我的建议会更好。

【讨论】:

  • 您好!哦,我相信这意味着更短、更快的程序来为我显示分配的工作。仍然会修补这种方法!太感谢了! :)
猜你喜欢
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 2011-07-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多