Java 用户输入和扫描仪有问题

Java 用户输入和扫描仪有问题,java,Java,快速概述: 我正在做一个基本的程序,询问用户他们希望他们的“梦想汽车”有多少门 publicstaticvoidmain(字符串[]args){ CarSim carSimUser1=新的CarSim(); System.out.println(“您好,欢迎来到Car Matcher!”); Scanner scanName=new Scanner(System.in);//用户输入名称 System.out.println(“你叫什么名字?”); 字符串userName=scanName.ne

快速概述:

我正在做一个基本的程序,询问用户他们希望他们的“梦想汽车”有多少门

publicstaticvoidmain(字符串[]args){
CarSim carSimUser1=新的CarSim();
System.out.println(“您好,欢迎来到Car Matcher!”);
Scanner scanName=new Scanner(System.in);//用户输入名称
System.out.println(“你叫什么名字?”);
字符串userName=scanName.nextLine();
System.out.println(“Hello”+用户名);
System.out.println(“那么你是在找新车?”;
System.out.println(“您想要四门轿车吗”);
System.out.println(“或双门轿跑车?”);
System.out.println(“仅输入数字!”);
Scanner scanDoor=新扫描仪(System.in);//用户输入门的数量
int numbOfDoor=scanDoor.nextInt();

虽然(numbOfDoor这是一种可能性。请注意,numbOfDoor设置为0,测试将检查它是否为可接受的值之一,以及nextInt是否在循环中。不必使用break语句

int numbOfDoor = 0;
while(numbOfDoor != 2 && numbOfDoor != 4){
    numbOfDoor = scanDoor.nextInt();
    if(numbOfDoor == 4){
         System.out.println("Okay, so you want " + numbOfDoor);
    } else if(numbOfDoor == 2){
        System.out.println("Okay, so you want " + numbOfDoor);    
    } else{
        System.out.println("Select either 2 or 4 doors!");
    }
}
您也可以使用

int numbOfDoor = 0;
while( true ){
    numbOfDoor = scanDoor.nextInt();
    if(numbOfDoor == 4){
         System.out.println("Okay, so you want " + numbOfDoor);
         break;
    }
    // More if + println + break
}

这里您需要中断语句。

这个问题的可能解决方案如下。这不是最优雅的解决方案,但它几乎是从代码中逐字逐句的解决方案。从这个示例中学习的一个好技巧是使用while循环输入,这样您就可以提高代码的健壮性

int numbOfDoor = 0;
while(numbOfDoor != 2 && numbOfDoor != 4){
    numbOfDoor = scanDoor.nextInt();
    if(numbOfDoor == 4){
         System.out.println("Okay, so you want " + numbOfDoor);
    } else if(numbOfDoor == 2){
        System.out.println("Okay, so you want " + numbOfDoor);    
    } else{
        System.out.println("Select either 2 or 4 doors!");
    }
}
int numbOfDoor = scanDoor.nextInt();
    while (numbOfDoor != 2 || numbOfDoor != 4)
    {
        System.out.print("Invalid choice, try again: ");
        numbOfDoor = scanDoor.nextInt();

        if (numbOfDoor == 2 || numbOfDoor == 4)
            break;

    }

    if(numbOfDoor == 4)
    {
       System.out.println("Okay, so you want " + numbOfDoor);

    }


    else if(numbOfDoor == 2)
    {
        System.out.println("Okay, so you want " + numbOfDoor); 
    }

    else
    {
        System.out.println("Select either 2 or 4 doors!");

    }
scanDoor.close()