В моем классе драйверов CarRaceSim в функции race я вызываю оба объекта car1 и car2. Затем я вызываю функцию ускорения и торможения из моего класса CarRace, которая должна добавлять и вычитать случайное число из переменной скорости, которая передается в ускорении и торможении. Переменная скорости представляет собой целое число, которому пользователь присваивает значение. Однако, когда я вызываю функцию и распечатываю ее, она отображает только то, что ввел пользователь. В целом программа должна имитировать 5 гонок, в которых на каждом круге (5 раз) автомобиль ускоряется и тормозит, поэтому я назвал ускорение и тормоз для обеих машин. Как я могу заставить ускорение и тормоз работать правильно?
package carrace;
import java.util.Random;
/**
*
* @author Daniel
*/
public class CarRace {
int year, speed;
String model, make;
// default constructor
public CarRace(){
year = 2000;
model = "";
make = "";
speed = 0;
}
// non-default constuctor
public CarRace(int aYear, String aModel, String aMake, int aSpeed){
this.year = aYear;
this.model = aModel;
this.make = aMake;
this.speed = aSpeed;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public String getMake() {
return make;
}
public void setMake(String make) {
this.make = make;
}
public void accelerate(int speed){
Random randomNum = new Random();
int ranNum;
ranNum = randomNum.nextInt(26) + 5;
speed += ranNum;
}
public void brake(int speed){
Random randomNum = new Random();
int ranNum;
ranNum = randomNum.nextInt(26) + 5;
speed -= ranNum;
}
public String toString(){
return "The year of the car is " + year + ", the model of the car is " + model + ", the make of the car is " + make + ", and the initial speed is " + speed + ".\n";
}
}
package carrace;
import java.util.Scanner;
/**
*
* @author Daniel
*/
public class CarRaceSim {
public static CarRace car1;
public static CarRace car2;
public static void main(String[] args) {
System.out.println("Welcome to the car simulation program!");
System.out.println("You will now begin to create your two cars to race, good luck!\n\n");
createCar(1);
createCar(2);
race(car1, car2);
}
public static void createCar(int carCreation){
Scanner keyboard = new Scanner(System.in);
int year = 0;
String model;
String make;
int speed = 0;
do{
if (carCreation == 1)
System.out.println("Create your first car!");
else
System.out.println("Create your second car!");
System.out.println("What year is your car?");
year = keyboard.nextInt();
System.out.println("What model is your car?");
model = keyboard.next();
System.out.println("What make is your car?");
make = keyboard.next();
System.out.println("What speed is your car initially starting at? (0-60)");
speed= keyboard.nextInt();
if(speed < 0){
System.out.println("You can not begin at a negative speed, please choose between 0-60.");
}
else if(speed > 60){
System.out.println("You can not start above 60, please choose between 0-60.");
}
}while(speed <= 0 && speed >= 60);
if(carCreation == 1){
car1 = new CarRace(year, model, make, speed);
System.out.println(car1);
}
else{
car2 = new CarRace(year, model, make, speed);
System.out.println(car2);
}
}
public static void race(CarRace carUno, CarRace carDue){
for(int i = 1; i <= 5; i++){
System.out.println("Lap " + i);
System.out.println("Car 1's stats:");
car1.accelerate(car1.getSpeed());
System.out.println(car1.getSpeed());
car1.brake(car1.getSpeed());
System.out.println(car1.getSpeed());
System.out.println("Car 2's stats:");
car2.accelerate(car2.getSpeed());
System.out.println(car2.getSpeed());
car2.brake(car2.getSpeed());
System.out.println(car2.getSpeed() + "\n");
}
}
}