Frage

Wie kann ich richtig Blase Art durch eine Textdatei, indem die Werte in einem Array zuweisen. Im folgenden Code habe ich versucht, die Werte aus der Textdatei in einem Zeichenfolge zuweisen, während immer noch gibt es etwas zu holen. Dann habe ich eine for-Schleife, die einen zuzuweisen, die ich mit dem Array zu holen haben. Dann versucht die Blasensortierung zu verwenden, hoffentlich sort die Zahlen, die ich vom höchsten zum niedrigsten fetch haben. Aber ich bekomme diese eine als Ausgang:

5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  5  
10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  10  
4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  4  
20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  20  
100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  100  
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  
0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  
78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  78  
12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  12  
29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  29  

Hier ist mein Code:

     try{
 int i;
 String ss;
   FileReader fr;
      fr = new FileReader (new File("X:\\file.txt"));
      BufferedReader br = new BufferedReader (fr);


while ((ss = br.readLine()) != null) {
    String[] sv = ss.split(" ");


        String splayer_name=sv[1];
        String s_player_score=sv[2];

 for(int xy=0;xy<player_name.length;xy++){
        player_name[xy]=splayer_name;
        player_score[xy]=Integer.parseInt(s_player_score);
}


bubble_srt(player_score, player_score.length);

    for(i = 0; i <player_score.length; i++)
      System.out.print(player_score[i]+"  ");
    System.out.println();




  }

  }catch(Exception e){}

Bitte Hilfe,

Update: fragte jemand über die Dateistruktur, sind Sie auf diese: Dies ist der datei.txt, derjenige, dass ich das Abrufen ist die rechte Nummer:

1 a 5
2 b 10
5 x 4
7 h 20
War es hilfreich?

Lösung

  1. Bewegen Sie die for-Schleife und der bubble_srt() Anruf außerhalb der while-Schleife. Sie ersetzen den gesamten Inhalt auf jeder Iteration wie das, was die frühere Antwort richtig bemerkt hat. Sie wollen nur zu sortieren, nachdem der gesamte Dateiinhalt gelesen werden.
  2. Da die Dateien jeder Größe sein kann, gibt es keine Möglichkeit, die Anordnung im Voraus zu initialisieren, wenn Sie zwei ein ausführen möchten liest die Zählung zu bekommen und dann in das Array zu lesen. Sie wäre besser dran, eine Liste mit. Hier ist ein Skeleton-Code:

    try {
        int i;
        String ss;
        FileReader fr;
        fr = new FileReader(new File("file.txt"));
        BufferedReader br = new BufferedReader(fr);
        int xy=0;
        List<String> player_name = new ArrayList<String>();
        List<Integer> player_score = new ArrayList<Integer>();
    
    
    
    while ((ss = br.readLine()) != null) {
        String[] sv = ss.split(" ");
    
    
            player_name.add(sv[1]);
            player_score.add(Integer.parseInt(sv[2]));
    
    
    }
    
    
    bubble_srt(player_score);
    
    } catch (Exception e) { }

(Ändern Sie bitte Ihre Blase sortieren eine Liste Eingabe nehmen)

Andere Tipps

Ich denke, Ihr Hauptproblem bei der Schleife ist:

 for(int xy=0;xy<player_name.length;xy++){
        player_name[xy]=splayer_name;
        player_score[xy]=Integer.parseInt(s_player_score);
}

Jedes Mal, wenn Sie in einer Zeile lesen. Sie ersetzen den gesamten Inhalt des * player_name * Array mit dem splayer_name, und das den gesamten Inhalt der * player_score * mit dem int-Wert von s_player_score.

Ich vermute, dass das, was Sie versuchen, einen einzigen neuen Eintrag player_name und Spieler-Score zu tun hinzuzufügen. Die Größe der beiden Arrays müssen die Anzahl der Zeilen in der Textdatei gleich sein, so dass Sie irgendeine Form von Liste eher als ein Array verwenden möchten.

Für beide Speicher-Arrays (oder Listen) fügen Sie den Namen einmal und die Partitur einmal und ich denke, dass Sie auf dem richtigen Weg zu bekommen, was Sie zu tun versuchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top