簡體   English   中英

Java 輸入不工作(初學者)

[英]Java Input not working (Beginner)

出於某種原因,我的代碼將不接受最后一行“您想要訂購什么:”的輸入

誰能告訴我我的錯誤是什么? 它正在正確編譯和一切。 我只是一個初學者,所以請用基本術語告訴我。

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.nextLine()的行之后立即調用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的泛型類型,這樣就不必將對Menu.get()的進一步調用強制轉換為String了。

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

比較字符串時,請確保使用str.equals("string to compare with")方法,而不是等於運算符( == )。 因此,例如, choice2 == "yes"應該改為choice2.equals("yes") 使用equalsIgnoreCase代替equals將忽略大小寫差異,這在這種情況下可能很有用。

插入in.nextLine(); 您只需嘗試使用其他掃描儀功能(例如“ in.next()”)即可。 只需使用已經提供JVM本身的方法進行研發。 您只需要使用正確的邏輯並使用由“ =”運算符插入的equal()或equlIgnoreCase()方法即可。

您的代碼缺少三個花括號。 Arraylist必須這樣聲明

 ArrayList<class> list = new ArrayList<class>();

如果要整數數組列表

ArrayList<Integers> in = new ArrayList<Integers>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM