为什么循环跳过i = 0情况?

时间:2019-06-17 12:42:10

标签: java loops for-loop java.util.scanner

我正在创建用于制作快捷方式的程序。基本上,它的作用是:我提供了要处理的单词数。假设我在这种情况下输入3。下一步是通过Scanner从用户那里获得这些单词。看起来很容易,对吧?我做了什么?我将Scanner放入循环内(它应该将单词放入ArrayList内),但是循环跳过了0而不要求用户输入单词。我认为这是Scanner的问题,原因是当我放置而不是使用诸如System.out.println之类的扫描器时,循环工作正常。

我已经尝试制作其他函数来询问用户单词并将此元素添加到列表中,而在同一循环中,我刚刚到达此函数。但这没有帮助。我也尝试将“ i ++”移到data.add后面,但效果不佳。

public class Main {

    public static void main(String[] args) {
        ArrayList<String> data = new ArrayList<>();
        UserInteraction userInteraction = new UserInteraction();
        userInteraction.enterData(data);
        for(String x: data)
            System.out.println(x);
    }
}

public class UserInteraction {
    private Scanner scanner = new Scanner(System.in);
    private int getData() throws InputMismatchException {
        try{
            int number = scanner.nextInt();
            return number;
        }catch (InputMismatchException e){
            System.out.println("Not a number. Try again:");
            return getData();
        }
    }



    void enterData(ArrayList<String> data){
        System.out.println("Enter the number of words:");
        int quantity = getData();
        System.out.println("Now, enter the words. Every word must be separated by clicking enter:");
        for(int i=0; i<quantity;i++){
            System.out.println(i);
            data.add(scanner.nextLine());

        }
    }

}

我得到以下输出:

Enter the number of words:
4
Now, enter the words. Every word must be seperated by clicking enter:
0
1

您可以看到由于某些原因未到达扫描仪。但是在1、2和3之后,它可以工作。是的,我可以修改循环

0 个答案:

没有答案