繁体   English   中英

有人可以解释这两个简单的循环吗?

[英]Can someone please explain these two simple loops?

您好,我在理解以下代码时遇到问题。

public static void main(String[] args) {
    String vstup = "DEN DOBRY";
    String vystup = "";
    int i = 2;
    do {
        vystup = vystup + vstup.charAt(i);
        i++;
    } while (vystup.charAt(0)>=vstup.charAt(i));
    System.out.println(vystup);
}

为什么这个打印出“ND”?

第二个:

public static void main(String[] args) {
    String vstup = "Mama má emu.";
    String vystup = "";
    for (int i = 0;i<vstup.length();i++)
        if ((i % 3) == 1) vystup = vystup.concat(vstup.substring(i, i+2));
        System.out.println(vystup);
}

为什么这个打印出“am me eu.”?

问题

  1. 代码的第一部分可以抛出 index out of bounds 异常(或类似的)
  2. 第二部分代码也可以抛出类似的异常

第一种情况的示例输入:ZYXWV

    do {
        vystup = vystup + vstup.charAt(i);
        i++;
    } while (vystup.charAt(0) >= vstup.charAt(i)); // i can get invalid

第二种情况的示例输入:ab

  if ((i % 3) == 1) vystup = vystup.concat(vstup.substring(i, i+2)); // i + 2 can be invalid index

第一个做什么?

  1. 从第二个索引i = 2开始
  2. 将索引处的字符连接到 output 并将索引增加 1
  3. 如果当前(递增)索引处的字符小于或等于字符串的第一个字符(第0个索引),则重复步骤 2
  4. 通过>= ,它比较代码点(字符的数值)

2nd做什么?

  1. 从第 2 个字符( 1索引)开始,选择 2 个相邻字符(第 2 个和第 3 个字符)
  2. 通过向右移动 3 个字符(从第 2 个字符除外)重复
str:     M    a    m    a          m    á          e    m    u    .
index:   0    1    2    3     4    5    6     7    8    9   10    11  

i%3==1        i   i+1         i   i+1         i   i+1       i    i+1

我希望这可以帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM