【问题标题】:What in my code would cause my for loop to terminate prematurely? Am I missing "i" somewhere within the loop?我的代码中的什么会导致我的 for 循环过早终止?我在循环中的某处缺少“i”吗?
【发布时间】:2020-03-13 05:09:27
【问题描述】:

我不知道是什么导致我的 for 循环终止。我只是尝试测试它,它只运行打印功能。然后它就终止了。我不明白它为什么会这样做。

import java.util.Scanner;
import java.util.ArrayList;
public class Test092 {

    public static void main(String[] args) {
        Scanner usersVal = new Scanner(System.in);
        ArrayList<Integer> arrayList = new ArrayList<>();

        int valAdd = 0;
        System.out.println("Please provide a list of numbers");

        for (int i = 0; i < arrayList.size(); i++) {

            valAdd = Integer.valueOf(usersVal.nextInt());

            if (valAdd == -1) {
                break;
            }else {
                arrayList.add(valAdd);
            }

        }

    }
}

【问题讨论】:

  • 你期望 arrayList.size() 是什么?
  • do while 循环在这里似乎比 for 循环更合适

标签: java for-loop terminate


【解决方案1】:

问题是您的 arrayList 中没有任何元素。因此,当您的循环检查 i &lt; arrayList.size() 时,循环不会运行(因为 arrayList.size() 为 0)

【讨论】:

  • 啊,就是这样!我已将其更改为
  • @mightymorphinParkRanger 既然不使用i 并使用break 退出循环,为什么不直接使用for(;;)(永远读取)或while (true)
【解决方案2】:

试试这个:

public static void main(String [] args) {
    try (Scanner usersVal = new Scanner(System.in)) {
        List<Integer> arrayList = new ArrayList<>();
        System.out.println("Please provide a list of numbers");

        int valAdd = usersVal.nextInt();
        while (valAdd != -1) {
            arrayList.add(valAdd);
            valAdd = usersVal.nextInt();
        }
        System.out.println(arrayList);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-21
    • 2019-04-22
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多