Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 第二种方法扫描仪不';行不通_Java_Java.util.scanner - Fatal编程技术网

Java 第二种方法扫描仪不';行不通

Java 第二种方法扫描仪不';行不通,java,java.util.scanner,Java,Java.util.scanner,当我执行下面的代码时,它为inputCar1方法正确地获取输入,但在inputCar2方法中,它执行除第一个scanner命令之外的所有命令。如果我使用这个命令两次,那么它的工作原理与我预期的一样,但不应该如此。为了更好地理解我的问题,我附加了代码和输出 打印类: package TestPackage; /** * Created by km.muzahid on 03-May-15. */ public class PrintClass { public static void

当我执行下面的代码时,它为
inputCar1
方法正确地获取输入,但在
inputCar2
方法中,它执行除第一个scanner命令之外的所有命令。如果我使用这个命令两次,那么它的工作原理与我预期的一样,但不应该如此。为了更好地理解我的问题,我附加了代码和输出

打印类:

package TestPackage;

/**
 * Created by km.muzahid on 03-May-15.
 */
public class PrintClass {
    public static void print(Object value){
        System.out.print(value);
    }
    public static void println(Object value)
    {
        System.out.println(value);
    }
}
汽车等级:

 package TestPackage;

    /**
 * Created by km.muzahid on 03-May-15.
 */
public class CarClass {
    public String manufacturerName;
    public int CarCC;
    public float CarWeight;
    public float FuealAmount;
    public CarClass()//constructor
    {
        CarCC=0;
        CarWeight=0;
        FuealAmount=0;
    }
    public CarClass(String CarNumber,String Name,int cc,float fuel,float weight)//constructor
    {
        PrintClass ShowMassage=new PrintClass();
        ShowMassage.println(CarNumber +"Car Manufacturer Name : "+Name+"\nCC of Car : "
                +cc+"\nAmount of fuel of car : "+fuel+"\nWeight of car : "+weight);
    }
}
问题代码:

package TestPackage;
import java.util.Scanner;
/**
 * Created by km.muzahid on 03-May-15.
 */
public class testclass {
    static private PrintClass ShowMassage;
    public static Scanner MyScanner=new Scanner(System.in);
    public static CarClass car=new CarClass();
    public static CarClass car2nd=new CarClass();//create new object from carclass for 2nd car

    public static void main(String[] args)
    {
      //1st car
       inputCar1("Enter for first car: ");
        CarClass SeeCar1=new CarClass("1st car details: \n",car.manufacturerName,car.CarCC,car.FuealAmount,car.CarWeight);
//        //2nd car
      CarClass See=new CarClass("2nd car details: \n",car2nd.manufacturerName,car2nd.CarCC,car2nd.FuealAmount,car2nd.CarWeight);

    }
    protected static void inputCar1(String Massege)
    {
        ShowMassage.println(Massege);
        ShowMassage.println("Enter Name of car manufactueing : ");
        car.manufacturerName=MyScanner.nextLine();
        ShowMassage.println("Enter weight of car :");
        car.CarWeight=MyScanner.nextFloat();
        ShowMassage.println("Enter the amount of Fuel : ");
        car.FuealAmount= MyScanner.nextFloat();
        ShowMassage.println("Enter the car CC : ");
        car.CarCC= MyScanner.nextInt();
        inputCar2("Enter For 2nd Car : ");
    }
    protected static void inputCar2(String Massege)
    {
        ShowMassage.println(Massege);
        ShowMassage.println("Enter Name of car manufactueing : ");
       //car2nd.manufacturerName=MyScanner.nextLine();
        car2nd.manufacturerName=MyScanner.nextLine();//problem indicated
        ShowMassage.println("Enter weight of car 2nd  :");
        car2nd.CarWeight=MyScanner.nextFloat();
        ShowMassage.println("Enter the amount of Fuel 2nd : ");
        car2nd.FuealAmount= MyScanner.nextFloat();
        ShowMassage.println("Enter the car 2nd  CC : ");
        car2nd.CarCC= MyScanner.nextInt();
        CarClass SeeCar1=new CarClass("1st car details: \n",car.manufacturerName,car.CarCC,car.FuealAmount,car.CarWeight);
        //2nd car
        CarClass See=new CarClass("2nd car details: \n",car2nd.manufacturerName,car2nd.CarCC,car2nd.FuealAmount,car2nd.CarWeight);
    }
}
输出:

Enter for first car: 
Enter Name of car manufactueing : 
lamborghini
Enter weight of car :
2222
Enter the amount of Fuel : 
2.369
Enter the car CC : 
236
Enter For 2nd Car : 
Enter Name of car manufactueing : 
Enter weight of car 2nd  :
263
Enter the amount of Fuel 2nd : 
3
Enter the car 2nd  CC : 
56
1st car details: 
Car Manufacturer Name : lamborghini
CC of Car : 236
Amount of fuel of car : 2.369
Weight of car : 2222.0
2nd car details: 
Car Manufacturer Name : 
CC of Car : 56
Amount of fuel of car : 3.0
Weight of car : 263.0
1st car details: 
Car Manufacturer Name : lamborghini
CC of Car : 236
Amount of fuel of car : 2.369
Weight of car : 2222.0
2nd car details: 
Car Manufacturer Name : 
CC of Car : 56
Amount of fuel of car : 3.0
Weight of car : 263.0

问题是,当按ENTER键时,会向输入缓冲区发送一个新行(
'\n'
),当按ENTER键时,会向输入缓冲区发送一个新行(
car.CarCC=MyScanner.nextInt(),它将使用数字,但不使用新行。所以稍后,当您执行
car2nd.manufacturerName=MyScanner.nextLine()时
输入缓冲区中仍有
'\n'
,而
nextLine()
将使用该
'\n'
并立即返回空字符串


解决方案是放置一个
MyScanner.nextLine()以使用丢失的新行。

问题是,当您按ENTER键时,您会将新行(
'\n'
)发送到输入缓冲区,当您执行此操作时,
car.CarCC=MyScanner.nextInt(),它将使用数字,但不使用新行。所以稍后,当您执行
car2nd.manufacturerName=MyScanner.nextLine()时
输入缓冲区中仍有
'\n'
,而
nextLine()
将使用该
'\n'
并立即返回空字符串

解决方案是放置一个
MyScanner.nextLine()在这两行之间的某个地方使用丢失的新行。

注意:根据java标准,变量名应以小写字母开头,类名应以大写字母开头。注意:根据java标准,变量名应以小写字母开头,类名应以大写字母开头。或始终使用
nextLine()
或始终使用
nextLine()
,即使您尝试获取数字(或任何内容)
Integer.parseInt(MyScanner.nextLine())