【问题标题】:How can this same result be achieved via a foreach loop in Java如何通过 Java 中的 foreach 循环实现相同的结果
【发布时间】:2011-06-05 16:56:05
【问题描述】:

我正在尝试制作一个DeleteRecord(),它接受任意数量的String[][] 类型参数。我做了一种测试功能,只是为了看看我需要应用什么样的逻辑来实现这个功能。我让它工作,但我想使用一个 foreach 循环。我怎样才能做到这一点。我有这个代码:

public void testSomething(String[][]... enteredStrings) {
        for (int i = 0; i < enteredStrings[0].length; i++) {
            for (int j = 0; j < enteredStrings[0][i].length; j++) {
                System.out.println("i -> " + i + " " + "j -> " + j + " " + enteredStrings[0][i][j]);
            }
        }
    }

我知道如何在 java 中创建 foreach 循环,但我无法使用多维数组来实现。提前致谢。

【问题讨论】:

  • 我的朋友是三维的
  • 如果你打算修改元素(因为我看到你想创建一个DeleteRecord()),你最里面的循环不应该是一个foreach循环,否则数组不会被修改。

标签: java multidimensional-array foreach


【解决方案1】:

您需要遍历字符串数组外部数组中的String[]s:

for (String[] arr : enteredStrings) {
    for (String str : arr) {
        ...
    }
}

【讨论】:

  • 在给定代码的情况下,for-each 循环的最大障碍将是第三个println。您正在那里使用索引,因此如果您需要保持该线的原样,您必须从这里开始并继续跟踪您的位置。
  • @SLaks 我想你忘记了testSomething() 是可变参数类型的部分
  • 我认为托马斯就在这里。每当您需要跟踪索引时,您不妨只使用标准的 for 循环。
  • 我认为enteredStrings实际上是一个3d数组。
  • 是的。 Eclipse 显示一个类似这样的工具提示 String[][][] 输入字符串。我的代码体也表明了这一点。
【解决方案2】:

对于您设置的 3D 数组,下面的代码将打印数组的内容。但是,我不确定您如何获得带有 a 的索引。

public void test2(String[][]... enteredStrings){
    for (String[] iii : enteredStrings[0]){
        for (String jjj: iii){
            System.out.println(jjj);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    相关资源
    最近更新 更多