In meiner Fahrerklasse CarRaceSim im Funktionsrennen rufe ich beide meiner Objekte car1 und car2 an. Dann rufe ich die Beschleunigungs- und Bremsfunktion aus meiner CarRace-Klasse auf, die eine Zufallszahl von der Geschwindigkeitsvariable addieren und subtrahieren soll, die beim Beschleunigen und Bremsen übergeben wird. Die Geschwindigkeitsvariable ist ein Int, dem der Benutzer einen Wert zuweist. Aber wenn ich die Funktion anrufe und sie ausdrucke, zeigt sie nur das an, was der Benutzer eingegeben hat. Das Programm soll 5 Rennen simulieren, in denen jede Runde (Schleife 5 mal) das Auto beschleunigt und bremst und Bremse für beide Autos. Wie kann ich beschleunigen und bremsen, um richtig zu funktionieren?Wie bekomme ich meine 2 Objekte und rufe eine Funktion auf, die eine Variable übergibt?
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");
}
}
}
Ich kann nicht glauben, dass ich das verpasst, danke ich es zu schätzen wissen. – Danny