java - attempting to read values and putting them from greatest to least -


i have file has following values: 2 4 8 10

im attempting sort them out greatest least, im having issues not functioning properly, giving me list 8,2,4. here code:

public void highscore () {     int highscore = 0;     string line = "";     int x = 0;     try     {         bufferedreader reader = new bufferedreader (new filereader ("highscores.txt"));         while ((line = reader.readline ()) != null)                 // read score file line line         {             x++;          }         reader.close ();     }     catch (ioexception ex)     {         system.err.println ("error reading scores file");     }     int[] y = new int [x];     int b = 0;     try     {         bufferedreader reader = new bufferedreader (new filereader ("highscores.txt"));         while ((line = reader.readline ()) != null)                 // read score file line line         {             int d = integer.parseint (line);             y [b] = d;             b++;         }         reader.close ();     }     catch (ioexception ex)     {         system.err.println ("error reading scores file");     }     int tempvar;     (int = 0 ; < y.length - 1 ; i++)     {         (int j = 0 ; j < y.length - 1 ; j++)         {             if (y [i] < y [j])             {                 tempvar = y [j + 1];                 y [j + 1] = y [i];                 y [i] = tempvar;             }         }     }     (int = 0 ; < y.length - 1 ; i++)     {         c.println (y [i]);     } } 

your bubble sort implementation off. here fixed version:

    int k;     int tempvar;     (int = y.length; >= 0; i--) {         (int j = 0; j < y.length - 1; j++) {             k = j + 1;             if (y[j] < y[k]) {                 tempvar = y[j];                 y[j] = y[k];                 y[k] = tempvar;             }         }     } // , printing doesn't need length - 1    (int = 0; < y.length; i++) {...} 

also can accomplish same using higher level functionality of java. here simpler version using java 8 streams , lambdas:

try {     stream<string> linestream = files.lines(paths.get("highscores.txt"));     list<integer> result = linestream             .map(line -> line.trim()) //remove whitespace             .map(line -> integer.valueof(line)) //parse string integer             .sorted((o1, o2) -> integer.compare(o2, o1)) // reverse sort             .collect(collectors.tolist()); //collect results list     result.foreach(score -> system.out.println(score)); } catch (ioexception e) {     e.printstacktrace(); } 

Comments

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -