Хорошо, поэтому я создал сценарий автопробега в java. Он имеет два класса. Класс Car
и класс TheRace
.как сортировать данные из пользовательского класса
Car
класс только имеет материал о машине, как расстояния, пройденное автомобилем, и в TheRace
, у меня есть два массива для водителей (driverArray
) и спонсоров (sponsors
). Я создал массив классов Car
, чтобы каждый драйвер имел разные скорости и расстояние.
Во всяком случае, как вы можете видеть, что я сделал boolean
под названием winner
, и 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;
}
}
Здесь есть * целый ряд * кода, с очень небольшим количеством дисков для того, что вы пытаетесь сделать. Попробуйте перефразировать ваш вопрос следующим образом: ожидаемый ввод, ожидаемый результат и минимальный подмножество вашего кода необходимо **, чтобы описать проблему/дать нам знания вашей структуры данных для создания решения. В противном случае все просто похоже на шум. Например, прямо сейчас вы даже не указали, как вы хотите отсортировать массивы, что в значительной степени является основой вопроса. – aruisdante
Итак, вопрос в том, как отсортировать массив объектов 'Car' по полю' totalOdMiles'? Или я неправильно понял? Если это вопрос, то очень похожие вопросы задавали _many_ раз раньше. Вероятно, вы захотите написать «Компаратор» для объектов «Car», а затем использовать метод 'sort' класса' Arrays'. –
Вы отправили кучу кода, который не имеет никакого отношения к вашему фактическому вопросу, пожалуйста, постарайтесь быть как можно более конкретными. –