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
Post a Comment