java - 简单对象类和记录

标签 java arrays object methods records

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

请参阅我的问题下方。我正在创建一个“汽车类”,其中创建了 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 数组中,然后将它们保存到外部 txt 文件中。解决以下两点后我将添加保存到文件。

现在的问题:

  1. 如何使扫描仪和显示更加优雅。正如您在下面的打印屏幕中看到的,数据加倍(打印到屏幕和扫描仪显示汽车类型两次)

enter image description here

  • 如何将汽车变量存储在一个数组中,然后仅打印型号或仅打印制造年份,或者对于一辆车,打印这辆车的所有值。 我知道如何创建一个字符串、int 或 double 数组。我只是不知道如何将上述变量存储在 Car 数组中并一一获取 car1 数组值。这让我很困惑。 预先致谢并致以诚挚的问候,
  • 最佳答案

    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();   
    }
    

    2. ArrayList 是比数组更好的选择,因为您可能不知道汽车的数量。您可以创建一个汽车列表并单独调用该方法以获得预期结果。

        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 + "]";
        }
    

    关于java - 简单对象类和记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41686479/

    相关文章:

    java - 需要使用 $select 和 $filter 实现 Elasticsearch 查询

    arrays - 将数组传递到 block 中

    Java 如何计算数组中数字的平均值?

    附加到新对象的 Java 注释?

    c# - 在 foreach 循环中访问 List<object[]> 的数组元素

    java - 何时使用 SwingUtilities.invokeAndWait/invokeLater

    java - 在控制台中打印出 ExamQuestion@143c8b3

    java - OpenGL ES 着色器似乎被删除

    javascript - 一个输入的值正在影响另一个输入

    javascript - 遍历对象