2017-06-28 2 views
-1

Mon programme permet à l'utilisateur d'entrer plusieurs fois des résultats de correspondance jusqu'à ce que l'utilisateur entre «stop», puis les résultats sont affichés. J'ai juste besoin de trouver la valeur d'entrée la plus élevée dans mon arraylist 'stats [2]', qui est le 'score d'hometeam'. Donc, si l'utilisateur entre 3 entrées, "Manchester City: Manchester United: 2: 1 ... Chelsea: Arsenal: 0: 1 ... Everton: Liverpool: 1: 1" alors il devrait afficher le nombre '2' comme c'est la valeur la plus élevée dans ce tableau. si ça a du sens? J'ai mis en place la ligne au bas où j'en ai besoin pour être affichée.Recherche de l'entrée max/min dans l'élément arraylist

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

Vous n'avez pas posé de question en plus de "cela a-t-il un sens". Quelle est votre question? – Kon

+0

Ma question est comment puis-je trouver le nombre le plus élevé entré dans l'élément [2] de mon arraylist et le stocker dans un int afin que je puisse l'afficher en bas? – JHurst

+0

Votre "question" ressemble à un livre de cuisine pour le faire. Pourquoi ne pas le faire comme vous le décrivez? Ou est la question comment comparer les valeurs int? – Heri

Répondre

0

boucle juste à travers elle, définir une variable égale au premier élément, et dans la boucle s'il y a un élément qui est supérieure à la variable actuellement est, changer la valeur de la variable à cela. Ensuite, imprimez la variable à la fin

+0

Seriez-vous capable de me donner un exemple de ce que cela donnerait dans le code? désolé, je suis nouveau à Java – JHurst

+0

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

+0

Merci beaucoup! – JHurst