我目前正在学习Java,并且已经完成了一些教程。但是,每个练习都只关注一个部分(例如学习IO,学习String,图形等),但是只有少数几个部分之间混合了多个章节。这意味着我很难编写一个更完整但仍然很简单的程序。

请在我的问题下方查看。我正在创建一个“汽车类”,在其中创建了4个变量。我为用户提供了插入汽车类型,年份和其他两个选项的选项。
设置所有值后,我们将显示它们。到目前为止(几乎)良好。

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 1 ====================
        Car car1 = new Car();
        System.out.println("Car1: ");
        car1.setMake(in);
        car1.getMake();
        car1.setModel(in);
        car1.getModel();
        car1.setYear(in);
        car1.getYear();

        Car [] cars = new Car [5];  // Creates a 5 car array / parking lot

    }

}


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

现在的问题:


如何使扫描仪和显示器更美观。如您在下面的打印屏幕中所见,数据被加倍(打印到屏幕,并且扫描仪两次显示汽车类型)


java - 简单对象类和记录-LMLPHP


如何将Car变量存储在一个数组中,然后仅打印模型或仅制造年份,对于Car one,则仅打印该汽车的所有值。
我知道如何制作一个字符串数组,整数或双精度。我只是不知道如何将上述变量存储在Car数组中,并一一获取car1数组的值。这让我感到困惑。
在此先感谢您,并致以诚挚的问候,

最佳答案

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

car1.setMake(in);
car1.setModel(in);
car1.setYear(in);
car1.getMake();
car1.getModel();
car1.getYear();


并更改设置器方法以提示消息输入内容,

public void setMake (Scanner in) {
    System.out.println("Enter Model : ");
    make = in.next();
}


2.在这里,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类使用toString方法来获取该类所有实例的值。

 @Override
    public String toString() {
        return "Car [make=" + make + ", model=" + model + ", year=" + year + ", plateNumber=" + plateNumber + "]";
    }

07-28 02:01
查看更多