2013-11-14 1 views
3

Я только начал изучать Java в этом семестре в колледже, и хотя я могу сделать некоторые из наиболее простых вещей, и я может работать через написание простых программ, я попал в блокпост при написании этой программы. Я не узнал о деревьях (похоже, это общее решение), и мне нужна помощь в сортировке и создании новых файлов.Java - Eclipse - Возьмите имена и цифры из файла, сортируйте по алфавиту в новый файл, отсортируйте их численно в новый файл

Мой файл, Игроки & Score.txt содержит следующее:

Bruce 127

Elayna 144

Lisa 153

Marcus 188

Amber 133

Райан 149

Dorian 099

Joel 175

Дженна 101

Поэтому в основном мне нужно отсортировать этот список в одном файле на основании того, имя, а затем на основе баллов. Мой код до сих пор выглядит так.

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

/** 
* Bruce P., November 14, 2013, CSC 131 
* This program uses a file consisting of members of a bowling league. Each line has one name and the average score of the player. 
* The program reads the file and then creates two new files in which one is sorted by alphabetical order of the player's name 
* and the other is sorted in numerical order based on the player's score. 
* 
*/ 

public class MembersAndScores 
{ 

    public static void main(String[] args) throws IOException 
    { 
     File inputFile = new File("Players&Score.txt"); 
     if (!inputFile.exists()) 
     { 
      System.out.println("File Players&Score.txt was not found."); 
      System.exit(0); 
     } 

     Scanner input = new Scanner(inputFile); 
     String line; 

     File scoreSort = new File("SortedByName.txt"); 
     PrintWriter writer = new PrintWriter(scoreSort); 

    } 

} 

Я, вероятно, испортил это, или я выгляжу очень глупым, прося о помощи. Я просто не понимаю этот раздел и как это сделать. Любая помощь приветствуется.

+0

ли ваш профессор сказал, как вы должны разобраться (то есть, есть какие-либо конкретные алгоритмы вы должны использовать)? –

+0

Не совсем. Мы только что прочитали главу, ответили на несколько вопросов в классе, затем он назначил это. Раньше мы использовали сортировку вставки для программы, но я не мог понять, как заставить ее работать, потому что он хотел, чтобы мы использовали кучу методов для сортировки массивов. – user2947827

+0

Трюк с этим успешно состоит в том, чтобы просто работать с небольшими кусками одновременно. Первый кусок, который я бы рекомендовал, - создать функцию, которая может сортировать список целых чисел. Поговорите со своим проф. о том, какой тип сортировки использовать и как вы можете улучшить свою предыдущую сортировку вставки. Затем разверните этот метод сортировки на объекты «Comparable» (если это необходимо Google), а затем поэтапно создайте остальную часть вашей программы. –

ответ

0

Это будет сортировать в соответствии с названиями. Я скоро добавлю код для оценки.

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

/** 
* Bruce P., November 14, 2013, CSC 131 
* This program uses a file consisting of members of a bowling league. Each line has one name and the average score of the player. 
* The program reads the file and then creates two new files in which one is sorted by alphabetical order of the player's name 
* and the other is sorted in numerical order based on the player's score. 
* 
*/ 

public class MembersAndScores 
{ 

    public static void main(String[] args) throws IOException 
    { 

     try { 
      File inputFile = new File("Players&Score.txt"); 
      if (!inputFile.exists()) 
      { 
       System.out.println("File Players&Score.txt was not found."); 
       System.exit(0); 
      } 

      BufferedReader input=new BufferedReader(new FileReader(inputFile)); 
      String line; 
      List<String> stl=new LinkedList(); 
      while(true){ 
       line=input.readLine(); 
       if(line!=null&&line.length()>1) 
       stl.add(line); 
       if(line==null) 
        break; 
      } 

      data=new String[stl.size()]; 
      for (int i=0;i<stl.size();i++) { 
       data[i]=stl.get(i); 
      } 

      Arrays.sort(data); 
      for (String string : data) { 
       System.out.println(string); 
      } 

      File scoreSort = new File("SortedByName.txt"); 
      PrintWriter writer = new PrintWriter(scoreSort); 
      for (String string : data) { 
       writer.write(string+"\n"); 
      } 

      writer.close(); 

     } catch (Exception ex) { 
      Logger.getLogger(MembersAndScores.class.getName()).log(Level.SEVERE, null, ex); 
     } 

    } 

} 

Вы можете получить более подробную информацию о Arrays.sort() here

+1

Это хорошо продуманный ответ, но в будущем, пожалуйста, помните, что мы здесь, чтобы помочь людям с их существующим кодом, а не писать для них новый код. Это особенно важно, когда учащиеся задают вопросы о своих заданиях. –

+0

Прошу прощения за это. На самом деле я был очень занят, чтобы интегрировать код в исходный код, и это был мой первый ответ (In code) в Stackoverflow. Так что принимайте это как ошибку начинающих :) –

+0

Нет проблем, просто запомните это в следующий раз. –

Смежные вопросы