Java 简单对象类和记录

Java 简单对象类和记录,java,arrays,object,methods,records,Java,Arrays,Object,Methods,Records,我目前正在学习Java,我已经做了一些教程。然而,每个练习都集中在一个部分(例如学习IO、学习字符串、图形等),但只有少数几个练习包含多个章节。这意味着我很难制作一个更完整但仍然简单的程序 请看下面我的问题。我正在制作一个“汽车类”,在这里我创建了4个变量。我为用户提供了插入车型、年份和其他两个选项的选项。 设置完所有值后,我们就可以显示它们了。到目前为止(几乎)还不错 在此之后,它应该将数据存储在[5]Car数组中,然后将其保存到外部txt文件中。解决下面两点后,我将添加保存到文件 现在的问题

我目前正在学习Java,我已经做了一些教程。然而,每个练习都集中在一个部分(例如学习IO、学习字符串、图形等),但只有少数几个练习包含多个章节。这意味着我很难制作一个更完整但仍然简单的程序

请看下面我的问题。我正在制作一个“汽车类”,在这里我创建了4个变量。我为用户提供了插入车型、年份和其他两个选项的选项。 设置完所有值后,我们就可以显示它们了。到目前为止(几乎)还不错

在此之后,它应该将数据存储在[5]Car数组中,然后将其保存到外部txt文件中。解决下面两点后,我将添加保存到文件

现在的问题是:

  • 如何使扫描仪和显示器更美观。正如您在下方的printscreen中看到的,数据加倍(print to screen和Scanner显示两次汽车类型)
  • 如何将汽车变量存储在一个数组中,然后仅打印模型或制造年份,或者对于汽车1,打印该汽车的所有值。 我知道如何制作字符串数组,int或double。我只是不知道如何将上述变量存储在Car数组中,并逐个获取car1数组值。这让我困惑。 提前感谢并致以最良好的问候
  • 当您将getter更改为不打印getter和setter执行的值和更改顺序时,您可以实现以下目标:

  • 当谈到第二个问题时,您可以像创建任何其他数组一样创建Car对象的数组,并轻松访问数组元素字段:

    public static void main(String[] args) {
        //other code
        Car [] cars = new Main [5];  
        cars[0] = car1;
        System.out.println(cars[0].getMake());
        System.out.println(cars[0].getModel());
    }
    
  • 当您将getter更改为不打印getter和setter执行的值和更改顺序时,您可以实现以下目标:

  • 当谈到第二个问题时,您可以像创建任何其他数组一样创建Car对象的数组,并轻松访问数组元素字段:

    public static void main(String[] args) {
        //other code
        Car [] cars = new Main [5];  
        cars[0] = car1;
        System.out.println(cars[0].getMake());
        System.out.println(cars[0].getModel());
    }
    

  • 创建汽车数组的方法与创建字符串数组的方法相同

    Car carArray[] = new Car[sizeofarray];
    carArray[i] = car1; 
    
    阅读也是如此:

    for(int i = 0; i < carArray.length; i++){
         carArray[i].getModel(); // do something here
    }
    
    您可以这样做:

    car1.setMake(in.nextLine());
    

    为了更好地打印,只需先打印借口,然后等待用户输入,不要重新打印输入。

    创建cars数组的方法与创建字符串数组的方法相同

    Car carArray[] = new Car[sizeofarray];
    carArray[i] = car1; 
    
    阅读也是如此:

    for(int i = 0; i < carArray.length; i++){
         carArray[i].getModel(); // do something here
    }
    
    您可以这样做:

    car1.setMake(in.nextLine());
    

    为了更好地打印,只需先打印借口,然后等待用户输入,不要重新打印输入。

    1.您当然可以先获取输入,然后显示输入的数据。所以

    car1.setMake(in);
    car1.setModel(in);
    car1.setYear(in);
    car1.getMake();
    car1.getModel(); 
    car1.getYear(); 
    
    并更改setters方法以提示消息输入内容

    public void setMake (Scanner in) {
        System.out.println("Enter Model : ");
        make = in.next();   
    }
    
    二,。ArrayList是一个比array更好的选项,因为您可能不知道汽车的数量。您可以创建一个汽车列表,并单独调用该方法以获得预期的结果

        ArrayList<Car> carList = new ArrayList<Car>();
        carList.add(car1);
    
        //Call the get(index) method to get the car object and then call the class method you want.
        carList.get(0).getMake();
        carList.get(0).getModel();
    
        //A class always should have a toString() method that returns the string with all the values of class instance.
        System.out.println(carList.get(0).toString());
    

    1.您当然可以先输入,然后显示输入的数据。所以

    car1.setMake(in);
    car1.setModel(in);
    car1.setYear(in);
    car1.getMake();
    car1.getModel(); 
    car1.getYear(); 
    
    并更改setters方法以提示消息输入内容

    public void setMake (Scanner in) {
        System.out.println("Enter Model : ");
        make = in.next();   
    }
    
    二,。ArrayList是一个比array更好的选项,因为您可能不知道汽车的数量。您可以创建一个汽车列表,并单独调用该方法以获得预期的结果

        ArrayList<Car> carList = new ArrayList<Car>();
        carList.add(car1);
    
        //Call the get(index) method to get the car object and then call the class method you want.
        carList.get(0).getMake();
        carList.get(0).getModel();
    
        //A class always should have a toString() method that returns the string with all the values of class instance.
        System.out.println(carList.get(0).toString());
    

    您应该使用Car类的构造函数来设置车型、年份等。从用户那里获取汽车信息并保存它,然后将其传递给构造函数

    像这样:

    public  Car( String make, String model, int year) {
         this.make = make;
         //set the values here
        }
    
    在您的主要方法中:

        String make = in.nextLine();
       // You can prompt the user for the car info and then assign the value respectively. Then pass it to the constructor 
    
       Car car1 = new Car(make,model,year);
    
    如果要创建汽车对象的数组,请创建一个
    while循环

          Car cars= new Car[5];
           int i=0;
           While(i<5){
         //ask user for input 
        .
        .
        .
        cars[i] = new Car(make,model,year);
       }
    
    Car cars=新车[5];
    int i=0;
    
    而(i您应该使用汽车类的构造函数来设置车型、年份等。从用户那里获取汽车信息并保存它,然后将其传递给构造函数

    像这样:

    public  Car( String make, String model, int year) {
         this.make = make;
         //set the values here
        }
    
    在您的主要方法中:

        String make = in.nextLine();
       // You can prompt the user for the car info and then assign the value respectively. Then pass it to the constructor 
    
       Car car1 = new Car(make,model,year);
    
    如果要创建汽车对象的数组,请创建一个
    while循环

          Car cars= new Car[5];
           int i=0;
           While(i<5){
         //ask user for input 
        .
        .
        .
        cars[i] = new Car(make,model,year);
       }
    
    Car cars=新车[5];
    int i=0;
    而(i使用System.out.println();作为getter,而不是.print(),使其看起来更漂亮。
    要将汽车添加到汽车[]中,您使用汽车[x]=car.x+1;

    使用System.out.println();而不是.print()作为getter,以使其看起来更漂亮。
    要将汽车添加到汽车[]您使用汽车[x]=car.x+1;

    这是一个有趣的问题。似乎有许多不同的方法来解决这个问题。@NimitPatel建议的是一个好主意。您也可以尝试类似的方法,保持当前的设计完好无损

    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    
    public class Car {
        String make;
        String model;
        int year;
        String plateNumber; 
    
        public  Car() {
        }
    
        // SETS and GETS the type of the Car
        public void setMake (Scanner in) {
            make = in.nextLine();   
        }
    
        public String getMake () {
            System.out.print("Make: " + make);
            return make;
        }
    
        // SETS and GETS the model of the Car
        public void setModel (Scanner in) {
            model = in.nextLine();
        }
        public String getModel () {
            System.out.print("Model: " + model);
            return model;
        }
    
        // SETS and GETS the year of fabrication
        public void setYear(Scanner in) {
            year = in.nextInt();
        }
        public int getYear () {
            System.out.print("Year: " + year);
            return year;
        }
    
        // SETS and GETS the plateNumber;
        public void setPlate (Scanner in) {
            plateNumber = in.nextLine();
        }
        public String getPlate ()
        {
            System.out.print("License: " + plateNumber);
            return plateNumber;
        }   
    
        public static void main(String[] args) throws IOException {
    
            File file = new File("");
            Scanner in = new Scanner(System.in);
    
            if (!file.exists()) {
                FileWriter writeFile = new FileWriter("cars.txt");
            }
    
            Car [] cars = new Car [5];  // Creates a 5 car array / parking lot       
    
            for(int i = 0; i < 5; i++)
            {
                Car myCar = new Car();
                System.out.println("Enter information for Car" + (i + 1) + ":");
                System.out.println();       
                System.out.print("Car" + (i + 1) + ": ");
                myCar.setMake(in);        
                System.out.print("Model: ");
                myCar.setModel(in);        
                System.out.print("Year: ");
                in.nextLine();           
                System.out.println();
                cars[i] = myCar;           
            }    
        }
    }
    
    然后你的主类将负责从用户那里获取信息,使用这些信息创建新的汽车,并将这些汽车放入一个数组或arrayList中。可能类似这样:

    import java.util.Scanner;
    
    public class Main 
    {   
        public static void main(String[] args)
        {
            String make, model;
            int year;    
            Car cars[] = new Car[3];
    
            // Get information about cars from the user
            // Use this information to create a car
            // Store this car in the array
            for(int i = 0; i < cars.length; i++)
            {   
                System.out.println("Enter information for car " + (i + 1));
    
                make = getMakeFromUser();
                model = getModelFromUser();
                year = getYearFromUser();
    
                Car myCurrentCar = new Car();
                myCurrentCar.setMake(make);
                myCurrentCar.setModel(model);
                myCurrentCar.setYear(year);
    
                cars[i] = myCurrentCar;              
                System.out.println();
            }
    
            // Display information about cars from the array        
            for(int i = 0; i < cars.length; i++)
            {
                System.out.println("Information about car " + (i + 1));
                System.out.println("Make: " + cars[i].getMake());
                System.out.println("Model: " + cars[i].getModel());
                System.out.println("Year: " + cars[i].getYear());
                System.out.println();
            }
        }
    
        static String getMakeFromUser()
        {
            String make;
            Scanner in = new Scanner(System.in);        
            System.out.print("Make: ");
            make = in.nextLine();
            return make;
        }
    
        static int getYearFromUser()
        {
            int year;
            Scanner in = new Scanner(System.in);        
            System.out.print("Year: ");
            year = in.nextInt();
            in.nextLine();
            return year;
        }
    
        static String getModelFromUser()
        {
            String model;
            Scanner in = new Scanner(System.in);        
            System.out.print("Model: ");
            model = in.nextLine();        
            return model;
        }
    }
    
    import java.util.Scanner;
    公共班机
    {   
    公共静态void main(字符串[]args)
    {
    串制、模型;
    国际年;
    汽车[]=新车[3];
    //从用户处获取有关汽车的信息
    //使用此信息创建汽车
    //把这辆车放在阵列中
    对于(int i=0;i