Java 输入不工作(初学者)

标签 java input system

出于某种原因,我的代码不接受最后一行“What would you like to order:”的输入

谁能告诉我这里的错误是什么?它正在正确编译和一切。我只是一个初学者,所以请用基本术语告诉我。

import java.util.Scanner;
import java.util.*;

class RestaurantMain {
    public static void main(String[] args)
    {

        //Create an array list
        ArrayList menu = new ArrayList();

        //Variables//
        int choice;
        int customerChoice;
        boolean trueFalse;
        int restart = 0;
        String choice2;
        String addItems = "";
        int menuCount = 0;
        int indexCount = 0;
        String item = "";

        //Import input device
        Scanner in = new Scanner(System.in);

        ArrayList theMenu = new ArrayList();

        System.out.println("Welcome to the Cooper's restaurant system!");
        System.out.println("How can I help?");
        System.out.println("");
        System.out.println("1. Customer System");
        System.out.println("2. Management System");
        System.out.println("");
        System.out.println("");
        System.out.print("Which option do you choose: ");
        choice = in.nextInt();

            if (choice == 1) {
                System.out.println("Our menu's are as follows:");
                System.out.println("");
                System.out.println("1. Drinks");
                System.out.println("2. Starters");
                System.out.println("3. Mains");
                System.out.println("4. Desserts");
                System.out.println("");
                System.out.println("Please note - You MUST order 5 items.");
                System.out.println("");
                System.out.print("What menu would you like to follow? ");
                customerChoice = in.nextInt();

                    if (customerChoice == 1) {
                        System.out.println("Drinks Menu");
                            System.out.println("Would you like to order? ");
                            choice2 = in.nextLine();
                                if (choice2 == "yes") {
                                    System.out.println("Please enter the amount of items you want to order: ");
                                    while (indexCount <= menuCount);
                                        System.out.println("Please enter your item: ");
                                        item = in.nextLine(); {
                                        theMenu.add(item);
                                    }
                                    }

                    }
                    if (customerChoice == 2) {
                        System.out.println("Starters Menu");
                    }
                    if (customerChoice == 3) {
                        System.out.println("Mains menu");
                    }
                    if (customerChoice == 4) {
                        System.out.println("Desserts Menu");
                    }

最佳答案

您需要在调用 in.nextInt() 的行之后立即调用 in.nextLine() 原因是仅要求下一个整数不会消耗输入中的整行,因此您需要通过调用 in.nextLine() 跳到输入中的下一个换行符>

customerChoice = in.nextInt();
in.nextLine();

每当您在调用不消耗整行的方法后需要换行时,几乎都必须执行此操作。考虑改用 BufferedReader 对象!

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int integer = Integer.parseInt(reader.readLine());

如果输入不能被解析为整数,这将抛出与 Scanner.nextInt() 相同的错误。

关于您对错误的评论,有一个:

while (indexCount <= menuCount);
System.out.println("Please enter your item: ");
item = in.nextLine(); {
 theMenu.add(item);
}

应该像下面这样:

while(indexCount <= menuCount){
    System.out.println("Please enter your item: ");
    item = in.nextLine();
    theMenu.add(item);
}

此外,这不是绝对必要的,但我建议您在实例化列表时声明 ArrayList 的通用类型,这样对 theMenu.get() 的进一步调用就不需要强制转换为字符串。

ArrayList<String> theMenu = new ArrayList<String>();

比较字符串时,确保使用 str.equals("string to compare with") 方法,而不是相等运算符 (==)。因此,例如,choice2 == "yes" 应该改为 choice2.equals("yes")。使用 equalsIgnoreCase 而不是 equals 会忽略大小写差异,这在这种情况下可能很有用。

关于Java 输入不工作(初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238680/

相关文章:

java - Kafka - 如何跳过偏移量中的错误消息并使用其余消息

java - Hibernate 不从连接池中释放连接

c++ - 用指定的字符结尾输入流,例如 '|'吗?

html - 当输入宽度低于特定值时,IE10 html输入清除按钮隐藏

java - primefaces 与民意调查咆哮

c - 当用户在 C 中输入无效数字或字母时如何给出打印语句错误

ruby-on-rails - 是否有支持 FTP 的 Ruby on Rails 主机?

在 Windows 上使用 cmd 提示符进行 C 编程

php系统、python和utf-8

java - 在 spring boot 中渲染 JSP 的问题