Advertisement
vinhnguyen1211

sortArray

Dec 21st, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.60 KB | None | 0 0
  1. /**
  2.  *
  3.  */
  4. package beginner;
  5.  
  6. import java.awt.Dimension;
  7. import java.awt.Font;
  8. import java.io.FileNotFoundException;
  9. import java.io.FileReader;
  10. import java.util.Scanner;
  11.  
  12. import javax.swing.JFrame;
  13. import javax.swing.JOptionPane;
  14. import javax.swing.JScrollPane;
  15. import javax.swing.JTextArea;
  16.  
  17. /**
  18.  * @author Vinh - legend1250
  19.  *
  20.  */
  21. public class test7 extends JFrame{
  22.    
  23.     /**
  24.      *
  25.      */
  26.     private static final long serialVersionUID = -6738928679463775687L;
  27.  
  28.     public static void main(String[] args){
  29.         test7 mainFrame = new test7();
  30.         mainFrame.setVisible(true);
  31.         mainFrame.setDefaultCloseOperation(EXIT_ON_CLOSE);
  32.     }
  33.    
  34.     JTextArea txtTopPlayer = new JTextArea();
  35.     JScrollPane scrPane = new JScrollPane(txtTopPlayer);
  36.    
  37.     String str_headerTopPlayer = "Rank \tName \tScore\n";
  38.     String[][] data_Player = new String[15][2];
  39.     String data_url = "D:\\top.txt";
  40.    
  41.     JTextArea txtTopPlayer02 = new JTextArea();
  42.     JScrollPane scrPane02 = new JScrollPane(txtTopPlayer02);
  43.    
  44.     public test7(){
  45.         setPreferredSize(new Dimension(600, 300));
  46.         setTitle("Top Player");
  47.         setLocation(400,200);
  48.         setLayout(null);
  49.         pack();
  50.        
  51.         //init Data Player
  52.         data_Player = initData(data_url);
  53.        
  54.         //
  55.         add(scrPane);
  56.         txtTopPlayer.setEditable(false);
  57.         scrPane.setBounds(10, 10, 250, 200);
  58.         txtTopPlayer.setFont(new Font("Tahoma", Font.PLAIN, 11));
  59.         txtTopPlayer.setText(getTopTenTable(data_Player));
  60.        
  61.         //ScrollPane02 - insert new data
  62.         add(scrPane02);
  63.         txtTopPlayer02.setEditable(false);
  64.         scrPane02.setBounds(280, 10, 250, 200);
  65.         txtTopPlayer02.setFont(new Font("Tahoma", Font.PLAIN, 11));
  66.         String result = insertData(data_Player, String.valueOf(5000), "Someone");  //add new Data
  67.         txtTopPlayer02.setText(result);
  68.        
  69.     }
  70.    
  71.  
  72.     /**
  73.      *
  74.      * @param data (String) array 2-Dimension: many rows, 2 column: score;name
  75.      * @return (String) top ten high score Player
  76.      */
  77.    
  78.     private String getTopTenTable(String[][] data){
  79.         String result = str_headerTopPlayer;
  80.         for(int i = 0 ; i < 10 ; i++){
  81.             String Player = String.format("%d \t%s \t%s\n", (i+1),data[i][1], data[i][0]);
  82.             result += Player;
  83.         }
  84.  
  85.         return result;
  86.     }
  87.    
  88.     /**
  89.      *
  90.      * @param path: path link to "highscore.txt"
  91.      * @return (String) array 2-Dimension sorted
  92.      */
  93.     private String[][] initData(String path){
  94.         String [][]data = new String[15][2];
  95.         int iCount = 0;
  96.         try {
  97.             Scanner reader = new Scanner(new FileReader(path));
  98.             iCount = 0;
  99.             String[] strLines;
  100.             while(reader.hasNextLine() && iCount < 10){
  101.                 strLines = reader.nextLine().split(";");
  102.                 data[iCount][0] = strLines[0];
  103.                 data[iCount][1] = strLines[1];
  104.                 //System.out.println(data[iCount][0] + " \t" +data[iCount][1]);
  105.                 iCount++;
  106.             }
  107.             reader.close();
  108.         }
  109.         catch (FileNotFoundException  | NumberFormatException | ArrayIndexOutOfBoundsException e ) {
  110.             JOptionPane.showMessageDialog(null, "highscore.txt not found or data corrupted");
  111.         }
  112.         //sap xep thu tu
  113.         int max = 0,num;
  114.         for(int i = 0 ; i < iCount ; i++){
  115.             max = Integer.parseInt(data[i][0]);
  116.             for(int j = i ; j < iCount ; j++){
  117.                 num = Integer.parseInt(data[j][0]);
  118.                 if(num > max){
  119.                     //System.out.println(num);
  120.                     String sTmp = data[i][0];
  121.                     String sTmp2 = data[i][1];
  122.                     data[i][0] = data[j][0];
  123.                     data[j][0] = sTmp;
  124.                     data[i][1] = data[j][1];
  125.                     data[j][1] = sTmp2;
  126.                     max = num;
  127.                 }
  128.             }
  129.         }
  130.        
  131.         return data;
  132.     }
  133.    
  134.     /**
  135.      *
  136.      * @param data (String) array 2-Dimension: many rows, 2 column: score;name. 2 column separated by ";"
  137.      * @param score (String) score of new Player
  138.      * @param name (String) name of new Player
  139.      * @return (String) top ten high score Player include new Player (if had)
  140.      */
  141.    
  142.     private String insertData(String[][] data, String score, String name){
  143.         int max = 0,num;
  144.         int iCount = 10;
  145.         data[9][0] = score;
  146.         data[9][1] = name;
  147.         try {
  148.             for(int i = 0 ; i < iCount ; i++){
  149.                 max = Integer.parseInt(data[i][0]);
  150.                 for(int j = i ; j < iCount ; j++){
  151.                     num = Integer.parseInt(data[j][0]);
  152.                     if(num > max){
  153.                         //System.out.println(num);
  154.                         String sTmp = data[i][0];
  155.                         String sTmp2 = data[i][1];
  156.                         data[i][0] = data[j][0];
  157.                         data[j][0] = sTmp;
  158.                         data[i][1] = data[j][1];
  159.                         data[j][1] = sTmp2;
  160.                         max = num;
  161.                     }
  162.                 }
  163.             }
  164.         }
  165.         catch (NumberFormatException | ArrayIndexOutOfBoundsException e ) {
  166.             JOptionPane.showMessageDialog(null, "data corrupted");
  167.         }
  168.         String result = str_headerTopPlayer;
  169.         for(int i = 0 ; i < 10 ; i++){
  170.             String Player = String.format("%d \t%s \t%s\n", (i+1),data[i][1], data[i][0]);
  171.             result += Player;
  172.         }
  173.  
  174.         return result;
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement