Java is an object-oriented language, so I'll just use objects:
Create a
Student
object with the three values you want to store (and atoString()
method to print them separated by "%":public class Student { private final String name; private final int number; private final int prizeMoney; public Student(final String name, final int number, final int prizeMoney) { this.name = name; this.number = number; this.prizeMoney = prizeMoney; } @Override public String toString() { return name+"%"+number+"%"+prizeMoney; } public int getPrizeMoney() { return prizeMoney; } }
Read your lines as
Student
objects, and store them in aList
:final Scanner scan = new Scanner(new File("/path/to/StudentsList")); final List<Student> students = new ArrayList<Student>(); while (scan.hasNextLine()) { final Scanner line = new Scanner(scan.nextLine()); line.useDelimiter("%"); students.add(new Student(line.next(), line.nextInt(), line.nextInt())); line.close(); } scan.close();
Order the
List
with a customComparator
, and print it:students.sort(new Comparator<Student>() { @Override public int compare(final Student s1, final Student s2) { return s1.getPrizeMoney()-s2.getPrizeMoney(); } }); for (final Student student: students) System.out.println(student);
Output:
Javis%4532%100
Kevin%7657%400
Green%3243%1000
Stefan%31231%1000
IronMan%5435%2000
Lamp%534%3000
Bob%5435%5000
Frank%345%10000