gpt4 book ai didi

java - 为什么类 Car 会存储对象 car 和 car2 的正确信息,但类 Owner 不会存储对象 Owner2 的信息?

转载 作者:行者123 更新时间:2023-11-30 05:57:46 25 4
gpt4 key购买 nike

我是 Java 新手。抱歉,这个时间太长了。下面是到目前为止我的代码的输出带有 ** 的部分是我遇到问题的地方。我应该比较两个 Car 对象的速度,但每个 Owner 对象要么是“安全”驾驶员,要么是“鲁莽”驾驶员。如果他们鲁莽,当他们加速时,他们会加速 10。如果他们安全,他们会加速 5。到目前为止,这方面是有效的,但是,只有第一个 Owner 对象会存储信息。因此,无论第一个 Owner 对象是什么(安全/鲁莽),它们都将是。我的汽车对象不会发生这种情况,因为每个单独的对象都存储正确的信息,这正是我遇到困难的地方。谁能帮我找出原因吗?

Car Name: Betty
Year: 2002
Car Make: Kia
Car Model: Soul
Car Mileage: 50000
Car Speed: 65
Car owner name: Jane
Car owner type: rash
Car Name: Duke
Year: 2002
Car Make: Ford
Car Model: F250
Car Mileage: 50000
Car Speed: 65
Car owner name: John
Car owner type: safe


Betty is a 2002 Kia Soul.
The current mileage is 50000 and current speed is 65.
Jane is the owner of the car and is a rash driver.

Duke is a 2002 Ford F250.
The current mileage is 50000 and current speed is 65.
**Jane is the owner of the car and is a rash driver.**

The total mileage of both cars is 100000
Betty is going 75.
**Duke is going 75.**

这是我的 Car 类:

class Car{

//---INSTANCE VARIABLES---
private String carName;
private int yearModel;
private String make;
private String model;
private int speed;
private int mileage;
private Owner carOwner;
private static int totalMileage;


//---CAR CONSTRUCTOR---
public Car(String n, int y, String ma, String m, int ml, int s, Owner o) {
carName = n;
yearModel = y;
make = ma;
model = m;
speed = s;
mileage = ml;
carOwner = o;
totalMileage += ml;
}

//---MUTATOR & ACCESSOR METHODS---

public void setName(String n) {
carName = n;
}
public String getName() {
return carName;
}

public void setYearModel(int y) {
yearModel = y;
}
public int getYear() {
return yearModel;
}

public void setMake(String ma) {
make = ma;
}
public String getMake() {
return make;
}

public void setModel(String m) {
model = m;
}
public String getModel() {
return model;
}

public void setSpeed(int s) {
speed = s;
}
public int getSpeed() {
return speed;
}

public void setMileage(int ml) {
mileage = ml;
}
public int getMileage() {
return mileage;
}

public void setOwnerName(Owner n) {
carOwner = n;
}
public Owner getOwnerName() {
return carOwner;
}

//---ACCELERATE()---

public void accelerate() {
if(carOwner.getOwnType().equalsIgnoreCase("rash")) {
speed += 10;
} else {
speed += 5;
}
}
//---BRAKE---

public void brake() {
if(speed == 0) {
System.out.println("You are already stopped!");
} else {
speed -= 5;
}//end if-else statement
}

//---COMPARE()---

public void compare() {

}

//---TOSTRING()---

public String toString() {
String response = "";
response += "\n\n"+ carName +" is a " + yearModel + " " + make + " " + model+ ".";
response += "\nThe current mileage is " + mileage + " and current speed is " + speed;
response += ".\n" + carOwner.toString();
return response;
}

//---TOTALMILEAGE---

public static int getTotalMileage() {
return totalMileage;
}

}//---END CLASS CAR

类所有者:

public class Owner {

private String ownName;
private String ownType;

public Owner (String ownerName, String ownerType) {
ownName = ownerName;
ownType = ownerType;
}

public void setOwnType(String ownerType) {
ownType = ownerType;
}
public String getOwnType() {
return ownType;
}

public void setOwnName(String ownerName) {
ownName = ownerName;
}
public String getOwnName() {
return ownName;
}

public String toString() {
return ownName + " is the owner of the car and is a " + ownType + " driver.";
}


}//end Owner class

这是我的主要方法:

import java.util.*;
public class carDemo {

public static void main(String[] args) {
Car car = null;
Owner owner = null;
Car car2 = null;
Owner owner2 = null;
String carName, make, model, ownerName, ownerType;
int yearModel, speed, mileage;


Scanner kb = new Scanner(System.in);

for(int i = 1; i <= 2; i++) {
System.out.print("Car Name: ");
carName = kb.nextLine();

System.out.print("Year: ");
yearModel = kb.nextInt();
kb.nextLine();

System.out.print("Car Make: ");
make = kb.nextLine();

System.out.print("Car Model: ");
model = kb.nextLine();

System.out.print("Car Mileage: ");
mileage = kb.nextInt();
kb.nextLine();

System.out.print("Car Speed: ");
speed = kb.nextInt();
kb.nextLine();

System.out.print("Car owner name: ");
ownerName = kb.nextLine();

System.out.print("Car owner type: ");
ownerType = kb.nextLine();

if(i == 2) {
owner2 = new Owner(ownerName, ownerType);
car2 = new Car(carName, yearModel, make, model, mileage, speed, owner);
} else {
owner = new Owner(ownerName, ownerType);
car = new Car(carName, yearModel, make, model, mileage, speed, owner);

}

} //end for loop

System.out.print(car);
System.out.print(car2);
System.out.println("\n\nThe total mileage of both cars is " + Car.getTotalMileage());

car.accelerate();
car2.accelerate();
System.out.println(car.getName() + " is going " + car.getSpeed() + ".");
System.out.println(car2.getName() + " is going " + car2.getSpeed() + ".");




} //end main

} //end carDemo

最佳答案

carcar2 在构造函数中获取相同的 owner 实例。其中之一应该是 owner2

car2 = new Car(carName, yearModel, make, model, mileage, speed, owner2);
// here ^

关于java - 为什么类 Car 会存储对象 car 和 car2 的正确信息,但类 Owner 不会存储对象 Owner2 的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52867964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com