Почему класс Car будет хранить правильную информацию для объектов car и car2, а класс Owner не будет хранить информацию для объекта owner2? - PullRequest
0 голосов
/ 18 октября 2018

Я новичок в Java.Извините, это так долго.Непосредственно ниже вывод моего кода до сих пор В части с ** у меня возникла проблема.Предполагается, что я сравниваю скорости двух объектов Car, но каждый объект-владелец является либо «безопасным», либо «необдуманным» водителем.Если они опрометчивы, когда они ускоряются, они ускоряются на 10. Если они безопасны, они ускоряются на 5. Однако пока этот аспект работает, только первый объект-владелец будет хранить информацию.Поэтому, каким бы ни был первый объект Owner (Safe / Rash), они оба будут.Это не происходит с моими объектами Car, поскольку каждый отдельный объект хранит правильную информацию, в которой я испытываю трудности.Может кто-нибудь помочь мне понять, почему?

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

1 Ответ

0 голосов
/ 18 октября 2018

И car, и car2 получают один и тот же owner экземпляр в конструкторе.Один из них должен быть owner2.

car2 = new Car(carName, yearModel, make, model, mileage, speed, owner2);
                                                           // here ^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...