Input While循环和if语句出现问题

Input While循环和if语句出现问题,input,while-loop,try-catch,Input,While Loop,Try Catch,当我在终端窗口中输入帐号时,我得到了这个错误 我输入的数据是正确的,我在account中输入了一个字符串,比如“ste251”,在balance中输入了一个int,比如500 另外,当我试图在循环抛出不匹配的exeption时停止循环时,我得到: 调用这些nextInt()或next()方法之一时会出现此错误,因为输入值与next*()方法的模式不匹配。尝试通过设置断点来调试代码,您将很容易找到 它应该继续询问账号和余额,直到 用户输入大写字母X 这样写: while(true){

当我在终端窗口中输入帐号时,我得到了这个错误

我输入的数据是正确的,我在account中输入了一个字符串,比如“ste251”,在balance中输入了一个int,比如500

另外,当我试图在循环抛出不匹配的exeption时停止循环时,我得到:


调用这些nextInt()或next()方法之一时会出现此错误,因为输入值与next*()方法的模式不匹配。尝试通过设置断点来调试代码,您将很容易找到

它应该继续询问账号和余额,直到 用户输入大写字母X

这样写:

   while(true){
    //....
    //...
       System.out.print("Enter account number or X for exit: ");
        String option= myScanner.nextLine();
        if("X".equals(option)){
          break;
        }
        //....
       //...
    }
附言: 切勿使用此类
try/catch

  try {
        output.println(account + " " + balance);
    }
    catch (NullPointerException e)
    {
        System.out.println("PrintWriter is not assigned");
    }
而是用if语句检查它:

if(output!=null){
        output.println(account + " " + balance);
    }else{
        System.out.println("PrintWriter is not assigned");
    }
发件人:

由扫描程序引发,以指示检索到的令牌与预期类型的模式不匹配,或者该令牌超出预期类型的范围


这几乎说明了所有需要说的。检查意外输入。

由于您的整个代码似乎都不可用,像我这样的第三方进来重新构建整个示例会让人感到厌烦。相反,由于这是一个微不足道的案例,我将为您提供一个类似的、完整的、易于理解的示例,我已经有了这个示例。此代码以类似于您需要的方式接收输入;您应该能够根据您的具体要求对其进行修改

//Filename: "Hotel.java"
import java.util.*;

class Customer
{
    private String name;
    private int room;

    public void setName(String name)
    {
        this.name=name;
    }

    public String getName()
    {
        return this.name;
    }

    public void setRoom(int room)
    {
        this.room=room;
    }

    public int getRoom()
    {
        return this.room;
    }
}

class Hotel
{
    public static void initialize(Customer RoomList[])
    {
        for(int i=0; i<RoomList.length; i++)
        {
            RoomList[i]=new Customer();
            RoomList[i].setName("EMPTY");
            RoomList[i].setRoom(i+1);
        }
    }

    public static void viewList(Customer RoomList[])
    {
        for(int i=0; i<RoomList.length; i++)
        {
            if(RoomList[i].getName()=="EMPTY")
                System.out.println("Room number "+RoomList[i].getRoom()+" is vacant.");
            else
                System.out.println("Room number "+RoomList[i].getRoom()+" is ocupied by "+RoomList[i].getName()+".");
        }
        System.out.println();
    }

    public static boolean addCustomer(Customer RoomList[], String name)
    {
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName().equals("EMPTY"))
            {
                RoomList[i].setName(name);
                return true;
            }
        return false;
    }

    public static void showEmptyRooms(Customer RoomList[])
    {
        System.out.println("Available rooms are:");
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName()=="EMPTY")
                System.out.println(RoomList[i].getRoom());
        System.out.println();
    }

    public static boolean deleteCustomer(Customer RoomList[], String name)
    {
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName().equals(name))
            {
                RoomList[i].setName("EMPTY");
                System.out.println("Deletion successful.\n");
                return true;
            }
        return false;
    }

    public static int getIndex(Customer RoomList[], String name)
    {
        for(int i=0; i<RoomList.length; i++)
            if(RoomList[i].getName().equals(name))
                return i;
        return -1;
    }

    public static void main(String[] args)
    {
        Customer[] RoomList = new Customer[12];
        String name;
        initialize(RoomList);
        Scanner input = new Scanner(System.in);
        int option=0;

        do
        {
            System.out.println("        Hotel Booking Options");
            System.out.println("=====================================");
            System.out.println("1: To View all rooms");
            System.out.println("2: To Add customer to a room");
            System.out.println("3: To Display empty rooms");
            System.out.println("4: To Delete customer from a room");
            System.out.println("5: Find room from customer name");
            System.out.println("0: Exit");

            System.out.print("\nEnter your choice: ");
            option = input.nextInt();
            System.out.println();

            switch(option)
            {
                case 1:
                {
                    viewList(RoomList);
                    break;
                }
                case 2:
                {
                    System.out.print("Customer's name: ");
                    name=input.next();
                    System.out.println();
                    if(!addCustomer(RoomList, name))
                        System.out.println("No rooms available!");
                    break;
                }
                case 3:
                {
                    showEmptyRooms(RoomList);
                    break;
                }
                case 4:
                {
                    System.out.print("Customer's name: ");
                    name=input.next();
                    System.out.println();
                    deleteCustomer(RoomList, name);
                    break;
                }
                case 5:
                {
                    System.out.print("Customer's name: ");
                    name=input.next();
                    System.out.println();
                    System.out.println("Customer's room: "+RoomList[getIndex(RoomList, name)].getRoom()+"\n");
                    break;
                }
                case 0:
                {
                    System.out.println("\nThank you!\n");
                    break;
                }
                default:
                {
                    System.out.println("Invalid option!\n");
                    break;
                }
            }


        }while(option!=0);
    }
}
这给了我在终端中的以下信息:

Enter account number: qwerty
Enter account balance: 123
qwerty 123
Enter account number: asdfgh
Enter account balance: 456
asdfgh 456
Enter account number: X
Code terminated successfully!

我很确定你之前已经问过这个问题了…真的需要帮助吗?真的很抱歉,但我对此感到非常抱歉,这是完整的代码还是我在现有代码的基础上进行了调整,我不太明白你在做什么?这是一个更一般的问题,你可以很容易地适应你的条件进行更多的搜索:)谢谢,很明显,我是个彻头彻尾的人novice@user2292357当前位置我已编辑了我的答案。您的代码似乎运行良好;你可以查看我在下面附上的略加编辑的版本。
//Filename: "myPrg.java"
import java.util.*;

class myPrg {
    static Scanner myScanner = new Scanner(System.in);
    static int count = 0;

    public static void writeToFile(String account, int balance) {
        while (!account.equals("X")) {
            System.out.print("Enter account balance: ");
            balance = myScanner.nextInt();
            try {
                System.out.println(account + " " + balance);
            } catch (NullPointerException e) {
                System.out.println("PrintWriter is not assigned");
            }
            count++;
            System.out.print("Enter account number: ");
            account = myScanner.next();
        }
    }

    public static void main(String[] args) {
        System.out.print("Enter account number: ");
        String account = myScanner.next();
        writeToFile(account, 0);
        System.out.println("Code terminated successfully!");
    }
}
Enter account number: qwerty
Enter account balance: 123
qwerty 123
Enter account number: asdfgh
Enter account balance: 456
asdfgh 456
Enter account number: X
Code terminated successfully!