【问题标题】:3 Lines only about for loop, very confused3行只关于for循环,很困惑
【发布时间】:2020-05-15 14:57:26
【问题描述】:

为什么输出是 22212345?

不应该是:“43212345”,因为当我们不断将字符串的第一个值添加到字符串的先前版本时。

所以每次我们增加 k 时,我们都会从 2、3、4 开始并将其添加到之前的版本中。

为什么输出是 22212345?

String str = "12345";

for (int k = 1; k <= 3; k++) 
            str = str.charAt(k) + str;

【问题讨论】:

  • "将其添加到以前的版本中。" - 不,您将值添加到 String 的开头,这意味着 k 可能总是指向2
  • 这很有道理,非常感谢

标签: java string loops for-loop variables


【解决方案1】:

所以每次我们增加 k 时,我们都会从 2、3、4 开始并将其添加到之前的版本中。

不,你不是。你在str 前面加上k 的字符。

所以,如果我们有一支笔和一张纸和桌子检查代码(为什么人们不再检查桌面了?),你会看到实际发生了什么......

+---+-----------+---------+-----------------------+
| k | char at k |   str   | result (charAt + str) |
+---+-----------+---------+-----------------------+
| 1 |         2 |   12345 |                212345 |
| 2 |         2 |  212345 |               2212345 |
| 3 |         2 | 2212345 |              22212345 |
+---+-----------+---------+-----------------------+

【讨论】:

    【解决方案2】:

    这发生在每次迭代中:

    first_loop_state: {
        k : 1
        initial_str : "12345";
        str.charAt(k) : '2'
        final_str : "212345"
    }
    second_loop_state:{
        k : 2
        initial_str : "212345";
        str.charAt(k) : '2'
        final_str : "2212345"
    }
     third_loop_state:{
        k : 3
        initial str : "2212345";
        str.charAt(k) : '2'
        final_str : "22212345"
    }
    

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-07-13
      • 2017-05-03
      相关资源
      最近更新 更多