2017-06-28 1 views
-1

Mein Programm ermöglicht dem Benutzer, die Ergebnisse des Matches wiederholt einzugeben, bis der Benutzer 'Stop' eingibt, dann werden die Ergebnisse angezeigt. Ich muss nur den höchsten Eingabewert in meiner 'stats [2]' Arraylist finden, was der 'Hometeam Score' ist. Also, wenn der Benutzer 3 Eingaben eingibt, "Manchester City: Manchester United: 2: 1 ... Chelsea: Arsenal: 0: 1 ... Everton: Liverpool: 1: 1" dann sollte es die Nummer '2' anzeigen da es der höchste Wert in diesem Array ist. wenn das Sinn macht? Ich habe die Zeile unten eingerichtet, wo ich sie anzeigen lassen muss.Max/Min-Eintrag in Arraylist-Element suchen

public static void main(String args[]) { 

    Scanner sc = new Scanner(System.in); 
    ArrayList<String[]> stats = new ArrayList<>(); // initialize a container 
                // to hold all the stats 
    System.out.println("please enter match results:"); 

    int matchesPlayed = 0; 
    int invalidEntry = 0; 

    while (sc.hasNextLine()) { 

     String input = sc.nextLine(); 
     String[] results = input.split("\\s*:\\s*"); 

     if (results.length == 4) { 
      stats.add(results); 
      matchesPlayed++; 
     } 

     else if (input.equals("stop")) { 
      break; 
     } 

    } // end of while 

    for (int i = 0; i < stats.size(); i++) { 

     if (stats.get(i)[0].trim().isEmpty()) { 
      System.out 
        .println("no home team name entered on the following line:"); 
      invalidEntry++; 
      matchesPlayed--; 
     } 

     else if (stats.get(i)[1].trim().isEmpty()) { 
      System.out 
        .println("no away team name entered on the following line:"); 
      invalidEntry++; 
      matchesPlayed--; 
     } 

     else if (stats.get(i)[2].trim().isEmpty()) { 
      System.out.println("no home score entered on this line"); 
      invalidEntry++; 
      matchesPlayed--; 

     } 

     else if (stats.get(i)[3].trim().isEmpty()) { 
      System.out.println("no away score entered on this line"); 
      invalidEntry++; 
      matchesPlayed--; 
     } 

     try { 
      System.out.println(String.valueOf(stats.get(i)[0]) + " [" 
        + Integer.valueOf(stats.get(i)[2]) + "] " + " | " 
        + (String.valueOf(stats.get(i)[1]) 

        + " [" + Integer.valueOf(stats.get(i)[3]) + "] ")); 

     } catch (Exception e) { 
      // do nothing with any invalid input 
     } 

    } 
    System.out.println(" "); 
    System.out.println("Totals"); 
    System.out.println("-------------------------"); 
    System.out.println("total number of matches: " + matchesPlayed); 
    System.out.println("total number of invalid entries: " + invalidEntry); 
    System.out.println("highest home score: "); 
} 
+0

Sie haben keine Frage neben "macht das Sinn". Was ist deine Frage? – Kon

+0

Meine Frage ist, wie finde ich die höchste Nummer im [2] Element meiner Arraylist eingegeben und speichern Sie es in einem Int, so dass ich es unten anzeigen kann? – JHurst

+0

Ihre "Frage" sieht wie ein Kochbuch aus. Warum tust du es nicht so, wie du es beschreibst? Oder ist die Frage, wie man int Werte vergleicht? – Heri

Antwort

0

Gerade Schleife durch sie eine Variable gleich dem ersten Element und in der Schleife, wenn es ein Element, das zur Zeit höher als die Variable ist, wird der Wert der Variablen ändern, dass. Drucken Sie dann die Variable am Ende

+0

Würdest du mir ein Beispiel geben, wie das im Code aussehen würde? Entschuldigung, ich bin neu in Java – JHurst

+0

@JHurst https://Stackoverflow.com/a/1806830/5338668 –

+0

Vielen Dank! – JHurst