有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过数组进行索引循环并打印出元素?

下面的代码应该打印出数组中的元素,相反,它会一次又一次地打印出第一个元素,永远不会结束。我不知道这是不是一件简单的事情,但我没能找到我的错误。尽管这个问题对你们大多数人来说可能很简单,但我们将非常感谢你们的帮助

    public static void main(String [] args) {
        int[] myintarray = {12,32,34};
        int index= 0;
        while(index < 3)
        System.out.println(myintarray[index]);
        index++;
    }
}

实际结果:12。。。12 预期结果:12334

致以最良好的祝愿


共 (3) 个答案

  1. # 1 楼答案

    在没有大括号的一段时间内,只有紧跟在你痛哭之后的语句才会被执行

    在您的例子中,这意味着只有while之后的第一条语句将被循环,即“System.out.println(myintarray[index]);”

    因为“索引++;”如果未达到,索引将具有相同的值0,因此程序将始终打印数组的第一个元素。实际上,您的代码范围将用大括号转换为:

    while(index < 3) {
        System.out.println(myintarray[index]);
    }
    index++;
    

    要执行多条语句,请将其全部用大括号括起来

    while(index < 3) {
        System.out.println(myintarray[index]);
        index++;
    }
    
  2. # 2 楼答案

    这里的问题是,没有在打算进入while循环的代码周围加括号。您知道,当while循环或for循环没有附加括号时,在大多数语言中,循环只考虑下一个命令在其中,这将是由循环运行的唯一命令。p>

    因此,在运行程序时,程序只会重复“System.out.println(myintarray[index])”,而不会增加索引,因此“myintarray[index]”的值永远停留在12

    所以,我们可以用两种方法来解决这个问题:

    int index = 0;
    while(index < 3)
    {
        System.out.println(myintarray[index]);
        index++;
    }
    

    或者,如果我们想使用for循环

    for(int index = 0; index < 3, index++)
    {
        System.out.println(myintarray[index]);
    }
    
  3. # 3 楼答案

    变量index没有在循环中更新:它保持在初始值(index = 0),这就是为什么它总是打印数组中的第一个值。此外,由于index从未更新,因此条件index < 3始终是true,这就是循环永不结束的原因

    在while循环体周围添加支架可以解决问题:

      public static void main(String[] args) {
        int[] myIntArray = {12, 32, 34};
        int index = 0;
        while (index < 3) {
          System.out.println(myIntArray[index]);
          index++;
        }
      }
    

    输出:

    12
    32
    34
    

    在您的版本中,while循环的主体是单行:System.out.println(myintarray[index]);