如何将包含字符串和整数的文件读入ArrayList并按整数排序?

通知书

我正在尝试从包含按行组织的名称和等级列表的文本文件中读取,即:

大卫·史密斯84

苏珊L波特100

...

然后将它们(按行)存储在ArrayList中,并使用选择排序算法按学生的成绩对该ArrayList进行排序,但是我尝试了多种不同的方式对此进行编码,并且每次编辑似乎都提示另一个错误(我非常编程新手)。这是我目前拥有的:

import java.io.*;
import java.util.*;

public class Grades {
    private static void sort(ArrayList<String> list) {
        int pFill;
        int pTest;
        int pSmallest;
        String temp;
        for (pFill = 0; pFill < list.size(); pFill++) {
            pSmallest = pFill;
            for (pTest = pFill + 1; pTest < list.size(); pTest++) {
                if (pTest < pSmallest) {
                    pSmallest = pTest;
                }
            }
            temp = list.get(pSmallest);
            list.set(pSmallest, list.get(pFill));
            list.set(pFill, temp);
        }
    } 

    public static void main(String[] args){
        ArrayList<String> list = new ArrayList<>();
        String fileName = "students.txt";
        try (BufferedReader input = new BufferedReader(new FileReader(fileName))) {
            while(input.ready()){
                list.add(input.readLine());
            }
            input.close();
            sort(list);
            System.out.println(list);
        } catch (IOException e){
                System.out.println(e.getMessage());
        }
    }
}
普拉萨德

您可以创建一个学生对象来分别保存姓名和等级。一旦你添加了所有的数据到列表中,您可以直接通过使用list.sort()方法比较,但在你的情况要写入选择那种你为什么要编写另一种方法的做选择排序。

package com.stackovflow.problems;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Grades {

        public static void main(String[] args){
            ArrayList<Student> list = new ArrayList<>();
            String fileName = "students.txt";
            try (BufferedReader input = new BufferedReader(new FileReader(fileName))) {
                while(input.ready()){
                    String line = input.readLine().trim();
                    String name = line.substring(0,line.lastIndexOf(' '));
                    int grade = Integer.parseInt(line.substring(line.lastIndexOf(' ')+1));
                    list.add(new Student(name, grade));
                }
                input.close();
                selectionSort(list);
                System.out.println(list);
            } catch (IOException e){
                    System.out.println(e.getMessage());
            }
        }

        private static void selectionSort(ArrayList<Student> list) {
            int pFill;
            int pTest;
            int pSmallest;
            Student temp;
            for (pFill = 0; pFill < list.size(); pFill++) {
                pSmallest = pFill;
                for (pTest = pFill + 1; pTest < list.size(); pTest++) {
                    Student pTestStudent = list.get(pTest);
                    Student pSmallestStudent = list.get(pSmallest);
                    if (pTestStudent.getGrade() < pSmallestStudent.getGrade()) {
                        pSmallest = pTest;
                    }
                }
                if(pSmallest!=pFill) {
                    temp = list.get(pSmallest); 
                    list.set(pSmallest, list.get(pFill));
                    list.set(pFill, temp);
                }
            }

        }
    }

//This class is to hold line data in your students.txt file
class Student{
    private String name;
    private int grade;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getGrade() {
        return grade;
    }
    public void setGrade(int grade) {
        this.grade = grade;
    }
    public Student(String name, int grade) {
        super();
        this.name = name;
        this.grade = grade;
    }
    @Override
    public String toString() {
        return "Student [name=" + name + ", grade=" + grade + "]";
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

包含字符串和整数的排序数组列表

解析数组列表包含整数和字符串的ArrayList

如何将字符串仅拆分为正整数和负整数?

如何将字符串和整数比较为整数?

在python3中对包含字符串和整数的文件进行排序

当我混合使用整数和字符串时,如何将元素列表按数字顺序排序?

如何将包含字符串的列表转换为包含整数的列表(Python)

如何将 GBK 编码的文件读入字符串?

如何将整个文件读入字符串变量

文件输入包含字符串和整数

如何将整数添加到字符串ArrayList?

如何将包含负数的字符串解析为整数?

如何将包含美元金额的字符串转换为整数?

如何在python中将任意长度的文本文件读入单独的字符串和整数变量?

如何创建整数和字符串对的排序列表?

如何对整数和字符串数组进行排序?

Python排序列表的列表,其中包含整数和内部带有整数的字符串

对包含整数,小数和字符串SQL的字符串字段进行排序

Java读取包含字符串和整数的CSV文件,将它们添加到arraylist然后实例化arraylist

使ndarray包含字符串和整数

如何使用fgets读取包含字符串和整数的文件

如何仅将整数从文件读取到也包含字符串的c ++程序中?

如何将整数转换为字符串?

如何将字符串转换为整数

如何将字符串系列转换为整数

如何将整数值转换为字符串?

如何将整数转换为字符串?

如何将整数转换为字符串文字?

如何将字符串转换为整数?