【问题标题】:What is printed as a result of executing the following code segment? And why does that occur?执行以下代码段的结果是什么?为什么会这样?
【发布时间】:2017-07-13 00:04:51
【问题描述】:

执行后面的代码段会打印什么? (我通常会在我的计算机上使用 java 程序来执行此操作。但是,程序正在更新,这将需要几个小时。)无论如何,这是代码段:

ArrayList<String> digits = new ArrayList<String>();
for (int k = 0; k <= 9; k++)
{
digits.add("" + k);
}
for (int k = 0; k <= 4; k++)
{
String d1 = digits.remove(k);
String d2 = digits.remove(k);
digits.add(k, d1 + "+" + d2);
}
System.out.println(digits);

我还想知道为什么手动通过此代码会出现答案。我知道我得到了一个完全错误的答案,所以我也想知道为什么你们得到的答案是正确的答案。

【问题讨论】:

  • 认真的吗? SO 不是编译服务。
  • 我知道。但是,我也想知道。为什么会出现答案?
  • 你可能应该修改问题以反映这一点(尤其是标题),否则你会很快得到更多的反对意见。
  • 然后在调试器中单步调试代码,检查值的变化。
  • 您的 IDE 正在更新这一事实完全无关紧要。还有很多其他方法可以编译和测试您的代码,包括许多在线资源。 Stack Overflow 不是其中之一。

标签: java arrays list arraylist


【解决方案1】:

输出应该是这样的:[0+1, 2+3, 4+5, 6+7, 8+9]。虽然没有编译。

【讨论】:

    【解决方案2】:

    输出是 [0+1, 2+3, 4+5, 6+7, 8+9]

    • 第一个for循环将0到9的数字添加到数组列表中。

      for (int k = 0; k <= 9; k++) { digits.add("" + k);}
      
    • 五次 2 数字被删除,例如在第一次迭代中,数字 0 和 1 被删除。请记住,remove 会将后续元素向左移动。
    • 在同一迭代中,一个包含两个数字的字符串被插入到 ArrayList 的位置 k。

      for (int k = 0; k <= 4; k++){
        String d1 = digits.remove(k);
        String d2 = digits.remove(k);
        digits.add(k, d1 + "+" + d2);
      }
      

    【讨论】:

    • 谢谢!这个解释经过深思熟虑,非常简单/容易理解。
    【解决方案3】:

    您可以使用此站点编译并运行您的代码。

    https://www.compilejava.net/

    它产生这个: [0+1, 2+3, 4+5, 6+7, 8+9]

    【讨论】:

      猜你喜欢
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多