2016-11-20 21 views
0

name(String)とage(integer)のarrayListアイテムを最大10個保存するJavaプログラムがあります。 'または' DONE 'を入力し、配列の項目を出力します。Java - ArrayListの最大値と最小値を取得する

アレイの出力後、配列の最年少メンバーと最古メンバーを出力するようにします。

このデータをフェッチして表示する方法を考えることができません。

提案がありますか?

ありがとうございます。

import java.util.Scanner; 
import javafx.util.Pair; 
import java.util.ArrayList; 
import java.util.List; 

public class AgeName { 
    public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

     List<Pair<String, Integer>> names = new ArrayList<>(); 

     for (int i = 0; i < 10; i++) { 
      System.out.print("Enter name " + (i + 1) + ": "); 
      String line = input.nextLine(); 

      if (line.toUpperCase().equals("DONE"))  
       break; 

       System.out.print("Enter age for user " + line + ": "); 
       Integer age = Integer.parseInt(input.nextLine()); 

       names.add(new Pair<String, Integer>(line, age)); 
     } 
      System.out.print("\n"); 
      System.out.print("Names are: " + names); 
    } 
} 
+0

この[リンクを試してみてください](http://stackoverflow.com/questions/8304767/how-to-get-mリストアアライストからの最大値) –

+0

なぜあなたはペアを使用して、それをはるかに簡単にする特別なクラスではないのですか? – brummfondel

答えて

0

ただ、これらの情報に保つために、2つの変数を追加します。

Pair<String, Integer> minPair = null; 
    Pair<String, Integer> maxPair = null; 

をしての繰り返しでこれを追加します。

if (minPair==null || pair.getValue() < minPair.getValue()){ 
      minPair = pair; 
} 
if (maxPair==null || pair.getValue() > maxPair.getValue()){ 
      maxPair = pair; 
} 

これが与える:

public class AgeName { 
    public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 

     List<Pair<String, Integer>> names = new ArrayList<>(); 
      Pair<String, Integer> minPair = null; 
      Pair<String, Integer> maxPair = null; 

     for (int i = 0; i < 10; i++) { 
      System.out.print("Enter name " + (i + 1) + ": "); 
      String line = input.nextLine(); 

      if (line.toUpperCase().equals("DONE"))  
       break; 

       System.out.print("Enter age for user " + line + ": "); 
       Integer age = Integer.parseInt(input.nextLine()); 
       Pair<String, Integer> pair = new Pair<String, Integer>(line, age); 
       names.add(pair); 
       if (minPair==null || pair.getValue() < minPair.getValue()){ 
        minPair = pair; 
       } 
       if (maxPair==null || pair.getValue() > maxPair.getValue()){ 
        maxPair = pair; 
       } 
      } 

      System.out.print("\n"); 
      System.out.println("Names are: " + names); 
      System.out.println("min is: " + minPair.getKey()); 
      System.out.println("Max is: " + maxPair.getKey()); 
     } 
    } 
+0

返事ありがとうございます。ただし、提供したコードではエラーが発生します。 "2項演算子のオペランドタイプが不正" – APPAPA

+0

ステートメントの場合は、これを歓迎します。ペアクラスを見せてもらえますか? – davidxxx

+0

Ummm私は、上に示した(他のクラスはありません)1つのメソッドを使用していて、次のライブラリをインポートしています - import java.util.Scanner; import javafx.util.Pair; import java.util.ArrayList; import java.util.List; – APPAPA