这里是问题:数组排序 - 爪哇日食
国际奥委会已经要求你写一个程序来处理数据,并确定了对奖牌获得者花样滑冰。您将得到以下文件: Pairs.txt
其中包含每对滑板的数据。数据包括每位选手的姓名,国家和八位评委在技术方面和成绩方面的得分。一种典型的记录将是如下:
史密斯 琼斯 澳大利亚 5.0 4.9 5.1 5.2 5.0 5.1 5.2 4.8 4.3 4.7 4.8 4.9 4.6 4.8 4.9 4.5
每个溜冰者的最后得分是的总和这两类分数的平均值。
设计一个类来保存上述数据和最终得分。从文件中读取数据并计算每对的最终分数。对对象数组进行排序,并依次在屏幕上显示结果,为奖牌获得者提供特别突出的参考。
这是我的课
public class Skaters {
private String name1;
private String name2;
private String country;
private double[] arrTech = new double[8];
private double[] arrArt = new double[8];
private double score;
public Skaters(String n1, String n2, String c1, double[] arrT, double[] arrA)
{
this.name1 = n1;
this.name2 = n2;
this.country = c1;
this.arrTech = arrT;
this.arrArt = arrA;
}
public void setName1(String n1)
{
name1 = n1;
}
public void setName2(String n2)
{
name2 = n2;
}
public void setCountry(String c1)
{
country = c1;
}
public void setArrTech(double[] arrT)
{
arrTech = arrT;
}
public void setArrArt(double[] arrA)
{
arrArt = arrA;
}
public String getName1()
{
return name1;
}
public String getName2()
{
return name2;
}
public String getCountry()
{
return country;
}
public double[] getArrTech() {
return arrTech;
}
public double[] getArrArt() {
return arrArt;
}
public double getScore()
{
double sum = 0, avg1, avg2;
for (int r = 0; r < arrTech.length; r++)
sum += arrTech[r];
avg1 = sum/arrTech.length;
sum = 0;
for (int s = 0; s < arrArt.length; s++)
sum += arrArt[s];
avg2 = sum/arrArt.length;
return (avg1 + avg2);
}
}
这是我的主要
import java.io.*;
import java.util.Scanner;
public class testSkaters {
private static final int NUMBER_OF_JUDGES = 8;
public static void main(String[] args) throws IOException {
Skaters[] arrSkaters = new Skaters[50];
File myFile = new File("Pairs.txt");
Scanner input = new Scanner(myFile);
int countSkaters = 0;
String name1;
String name2;
String country;
double[] arr1 = null;
double[] arr2 = null;
while (input.hasNext())
{
name1 = input.nextLine();
name2 = input.nextLine();
country = input.nextLine();
arr1 = new double[8];
for (int i = 0; i < NUMBER_OF_JUDGES; i++)
arr1[i] = input.nextDouble();
arr2 = new double[8];
for (int j = 0; j < NUMBER_OF_JUDGES; j++)
arr2[j] = input.nextDouble();
Skaters s1 = new Skaters(name1, name2, country, arr1, arr2);
arrSkaters[countSkaters] = s1;
countSkaters++;
input.nextLine();
}
sortSkaters(arrSkaters, 10);
for (int t = 0; t < countSkaters; t++)
{
System.out.println("Name 1: " + arrSkaters[t].getName1());
System.out.println("Name 2: " + arrSkaters[t].getName2());
System.out.println("Country: " + arrSkaters[t].getCountry());
printArray(arrSkaters[t].getArrTech());
printArray1(arrSkaters[t].getArrArt());
System.out.println("Score: " + arrSkaters[t].getScore() + "\n");
}
}
public static void printArray(double[] arr3) {
for (int r = 0; r < arr3.length; r++)
System.out.print(arr3[r] + " ");
System.out.println();
}
public static void printArray1(double[] arr4) {
for (int s = 0; s < arr4.length; s++)
System.out.print(arr4[s] + " ");
System.out.println();
}
private static void sortSkaters(Skaters[] arr, double count) {
for (int i = 0; i < count; i++) {
int high = i;
for (int k = i + 1; k < count; k++) {
if (arr[k].getScore() > arr[high].getScore())
high = k;
if (i != high) {
Skaters temp = arr[i];
arr[i] = arr[high];
arr[high] = temp;
}
}
}
}
}
这里是文本文件
smith
jones
australia
4.2 5.1 3.8 2.9 5.0 4.6 4.9 4.3
4.9 4.8 5.8 3.8 4.9 4.6 5.0 4.5
lennon
murray
england
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8
gusto
petitot
italia
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8
lahaie
petit
france
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8
bilodeau
bernard
canada
2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8
4.1 4.2 4.3 4.8 4.9 4.6 4.0 4.5
lahore
pedro
mexico
3.2 3.1 3.8 3.9 3.0 3.6 3.9 3.3
5.9 5.8 5.8 5.8 5.9 5.6 5.0 5.5
maliak
kolikov
russia
4.2 4.1 4.8 4.9 4.0 4.6 4.9 4.3
1.9 1.8 1.8 1.8 1.9 1.6 1.0 1.5
ching
chong
china
5.2 5.1 5.8 5.9 5.0 5.6 5.9 5.3
2.9 2.8 2.8 2.8 2.9 2.6 2.0 2.5
gates
brown
U.S
1.2 1.1 1.8 1.9 1.0 1.6 1.9 1.3
3.9 3.8 3.8 3.8 3.9 3.6 3.0 3.5
joe
charlie
switzerland
2.2 2.1 2.8 2.9 2.0 2.6 2.9 2.3
4.9 4.8 4.8 4.8 4.9 4.6 4.0 4.5
我做了我的排序,但我的输出是错误的。最高分应该是第一名(这是赢家等)。我的代码不这样做,任何人都可以帮我请
Eclipse是一个IDE。如果你在java中对数组进行排序的方式与其他工具不同,那将会是个大问题。 – ChiefTwoPencils 2015-02-08 22:07:31
您是否知道有构建数组的方法?你不必自己做。 – csmckelvey 2015-02-08 22:10:32
@Takendarkk看起来像练习如何创建排序算法的功课。 – 2015-02-08 22:11:04