需要帮助了解如何排序信息从文本文件使用java



我试图建立一个程序,读取信息从一个.txt文件,其中包含20个人。每个人都有四个领域,他们所属的球队,他们的打击率和本垒打总数。我需要将每个人添加到他们的团队中(每个团队有4名球员),将团队的本垒打总数加起来,并按顺序对5个团队进行排名。我能够正确地将文本读取到由每个人组成的单个数组,但我无法弄清楚如何也使用此数据来创建2D数组。使用2D数组,我会将球员放在正确的队伍中,并添加他们的全垒打总数。我想对每支球队和每个人的本垒打总数从大到小进行排序。我已经尽了最大的努力去寻找答案,并在其他帖子和网站上学习,但我只是被创建2D数组以及如何对它们进行排序的概念难住了。

更新说明:对于单个数组,info应该是这样:

 [Team][Name][avg][Home Runs]

然后我只想对[Home Runs]列进行排序,从最大到最小,但不知道如何访问数组的那一部分

2D数组应该是这样的:

  [Team] [Total Team Home Runs]

还是从最大到最小排序。

.txt文件的示例如下:
 Team: Name:         Avg:HR:
 MILRyan Braun       .31015
 STLMatt Adams       .28718
 PITSterling Marte   .26420
 CINJoey Votto       .30224
 CUBAnthony Rizzo    .27422
 PITAndrew McCutchen .29522
 MILAdam Lind        .28013

下面的类读入.txt文件并将其放入数组中。

  public class ReadTxt {
static String[] teamm = new String[20];
static String[] name = new String[20];
static int[] avg = new int[20];
static double[] homeRuns = new double[20];
static String teams;
static int i;
public void Players(String[] teamm, String[] name, int[] avg, double[] homeRuns){
String[] team = new String[20];

File txtFile = new File("C:\Users\Users Name\Desktop\homerun.txt");
try{
    Scanner txtScan = new Scanner(txtFile);
    while(txtScan.hasNext()){
        for(i = 0; i < 20; i++){
            teams = txtScan.nextLine();
            team[i] = teams;
        }
    }
}
catch(FileNotFoundException e){
    System.out.println("File not found" + txtFile);
}
for (i = 0; i < team.length; i++){
    System.out.println(team[i]);
    }
}
}

下一个类是我排序的尝试:

public class Sort {
static String[] teamm = new String[20];
static String[] name = new String[20];
static int[] avg = new int[20];
static double[] homeRuns = new double[20];
private int index = 0;
private int US = 0;
static double[] homeRunArray;

public void Players(String[] teamm, String[] name, int[] avg, double[] homeRuns){
homeRunArray[index] = ReadTxt.homeRuns[index];
index++;;
US++;
}
public void selectionSort(){
    double temp;
    int min;
    for(int i = 0; i < US-2; i++){
        min = i;
        for(int j=i+1; j<= US-1; j++){
            if(min !=i){
                temp = homeRunArray[i];
                homeRunArray[i] = homeRunArray[min];
                homeRunArray[min] = temp;
            }
        }
    }
}
public void printArray(double[] homeRuns){
    for(int i = 0; i < 20; i++){
    System.out.print(homeRunArray[i]);
    }
        System.out.print("n");
    }
}

我不明白你的问题,但我认为你有点卡在你的2D-Array问题…

我建议您创建一个类并实现Comparable(或使用Comparator)。类似下面的代码,甚至更好,使一个真正的Player类。这更容易理解。
public class Sorter {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(new File("team"));
            List<SortableLine> lines = new ArrayList<SortableLine>();
            while(scanner.hasNext()) {
                lines.add(new SortableLine(scanner.nextLine()));
            }
            Collections.sort(lines);
            for(SortableLine line : lines) {
                System.out.println(line.line);
            }
        } catch(FileNotFoundException e) {
            System.err.println("File not found");
        }
    }
    private static class SortableLine implements Comparable<SortableLine> {
        private String sortCol;
        private String line;
        private SortableLine(String line) {
            this.line = line;
            this.sortCol = line.substring(24, 26);
        }
        public int compareTo(SortableLine other) {
            return sortCol.compareTo(other.sortCol);
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新