我目前正在学习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文件中。解决以下两点后,我将添加到文件保存。
现在的问题:
如何使扫描仪和显示器更美观。如您在下面的打印屏幕中所见,数据被加倍(打印到屏幕,并且扫描仪两次显示汽车类型)
如何将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 + "]";
}