【发布时间】:2015-01-28 20:48:09
【问题描述】:
好的,所以我用 java 制作了一个赛车脚本。它有两个类。 Car 类和 TheRace 类。
Car 类只包含有关汽车的信息,例如汽车行驶的距离,在 TheRace 中,我有两个数组用于驱动程序 (driverArray) 和赞助商 (sponsors)。我制作了一个Car 类数组,因此每个司机都有不同的速度和行驶距离。
无论如何,如您所见,我创建了一个名为 winner 的 boolean 和一个 while 循环,该循环将一直持续到 winner 为 true。驾驶员距离在while 循环中变得越来越大,直到myDistance 等于或大于100。
在代码中您可以看到if(carList[i].myDistance() >= 100){ winner = true;},然后我显示获胜者。
我一直在努力让它显示所有最终越过终点线的人100,并以他们完成的更正顺序显示他们。就像对数组或其他东西进行排序一样。我怎样才能显示每个人都得到了什么地方。我该怎么做?
TheRace 类,
package NASCAR;
import java.util.Arrays;
import java.util.Random;
public class TheRace {
// variables
public static String[] driverArray = {"steave smith", "Cheese farlin","Bob Joe","Josh Svioda", "Andrew Kralovec", "Ricky Bobby","Ashey GirslCanDriveTo","Kelsey IAgree","Joe ThisIsAManSport","Jess TheHellItIs","Jesus Defualt","Jason seglad","Andrew Smith","Andrew Johnson","Andrew Kosevsky","Andrew Anderson","Andrew Andrew", "Kate Andrew","Blondey Gold","Golden Blonde","Im Twenty" };
public static String[] sponsors = {"CocaCola","Pepsi","CoorsLight","GOD"} ;
public int[] currentDistance = new int[20];
public static void main(String[] args) {
Car[] carList = new Car[20] ;
Random rand = new Random();
for(int i =0 ; i < carList.length;i++){
carList[i] = new Car(driverArray[rand.nextInt(20)], sponsors[rand.nextInt(4)]) ;
} //end for
int lapCounter = 0 ;
boolean winner = false;
while(!winner){
for(int i = 0; i < carList.length; i++){
carList[i].changeDistance();
if(lapCounter % 6 == 0){
carList[i].speedChange();
} // end if change speed
System.out.println(carList[i].trackProgress());
if(carList[i].myDistance() >= 100){
winner = true;
System.out.println("_____ THE WINNER OF THE RACE IS: "+carList[i].myName()+" For team: "+carList[i].myTeam());
break ;
}
}// end for
lapCounter++;
System.out.println("---------------------------------");
} // end while
}// end main
}
Car 类,
package NASCAR;
import java.util.Random;
public class Car {
//variables
private float totalOdMiles ;
private float speedPerHour ;
private String driverName ;
private String sponsorName ;
private Random rand = new Random();
public Car(String driverName, String sponsorName){
this.driverName = driverName ;
this.sponsorName = sponsorName ;
this.totalOdMiles = 0;
this.speedPerHour = rand.nextInt( 60);
}
public String myName(){
this.driverName = driverName;
return driverName ;
}
public String myTeam(){
this.sponsorName = sponsorName;
return sponsorName ;
}
public float myDistance(){ //reprot distance
return totalOdMiles;
}
public void speedChange(){ //ChangeSpeed()
this.speedPerHour = rand.nextInt(60);
}
public void changeDistance(){ //UpdateProgress()
float milesPerSecond = this.speedPerHour / 3600;
this.totalOdMiles+=milesPerSecond;
}
public String trackProgress(){ //ToString()
return this.driverName +" driving the "+ this.sponsorName+" car is going "+ this.totalOdMiles +"MPS "+this.totalOdMiles;
}
}
【问题讨论】:
-
那里有一大堆代码,几乎没有什么可以驱动你想要做的事情。请尝试用以下内容重新表述您的问题:预期输入、预期输出和 您的代码的最小子集来描述问题/向我们提供您的数据结构的知识以生成解决方案。否则一切都只是噪音。例如,现在您甚至还没有指定要如何对数组进行排序,这几乎是问题的基础。
-
那么问题是如何通过
totalOdMiles字段对Car对象数组进行排序?还是我误会了?如果这就是问题所在,那么之前已经多次问过非常相似的问题。您可能想为Car对象编写Comparator,然后使用Arrays类的sort方法。 -
您贴了一堆与您的实际问题无关的代码,请尽量具体。
-
这对每个人都更好吗?
-
@user3450126,请查看我对 Java 8 和以前版本的 Java 的更新答案