java - For 循环不能在 Java 中运行

标签 java for-loop

所以我最近开始用 Java 编写代码,并且重写了我的第一个程序,试图通过使用方法使其更加优雅。这是我想到的:

import java.util.Scanner;
import java.util.ArrayList;

public class groceries {

    static Scanner scan = new Scanner(System.in);
    static ArrayList<String> shoppinglist = new ArrayList<>();
    static int b = 0;
    static String n ="";

    public static void main(String[] args) {
        getAmount(b);
        getInput(b, n);
        output();
    }

    private static void message (String m) {
        System.out.println(m);
    }

    private static void getAmount(int b) {
        message("How many articles do you want to buy?");
        b = scan.nextInt();
    }

    private static void getInput(int b, String n) {
        message("Which articles specifically do you want to buy?");
            for (int i = 0; i <= b; i++) {
                n = scan.nextLine();
                shoppinglist.add(n);
            }
        }

    private static void output() {
        message("Here are your purchases:");
        for (int k = 0; k<shoppinglist.size(); k++){
            message(shoppinglist.get(k));
        }
    }
}

一切正常,直到我点击 getInput - 我无法输入任何输入。程序结束并退出。

最佳答案

您之前正在调用方法nextInt()

问题是 nextInt() 不会消耗 '\n',因此下一次调用 nextLine() 会消耗它,然后等待读取输入“您具体想购买哪些商品?”。

您需要在调用 nextLine() 之前使用 '\n'

 private static void getAmount(int b) {
    message("How many articles do you want to buy?");
    b = scan.nextInt();
    scan.nextLine();// adding this, it will force to consume the '\n'
}

相关:Scanner is skipping nextLine() after using next() or nextFoo()?

关于java - For 循环不能在 Java 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60105449/

相关文章:

java - 使用 servlet,如何从数据库下载多个文件并将它们压缩以供客户端下载

Java简单游戏测试错误

c - For 循环和 While 循环在 C 中选择值

pandas - 需要向 pd.df 添加一列,其中包含函数中的值

Java Apache POI : setting default column style doesnt work for existing values

java - PreparedStatement IN 子句替代方案?

javascript - jQuery:循环迭代编号类?

java - 我需要帮助使用某种算法生成金字塔来组合数字(嵌套循环)

Java:非常有效地将字节流转换为对象

javascript - For 循环取决于数字输入