有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java获取ArrayList的最大值和最小值

我有一个Java程序,它最多存储10个arrayList项(名称(字符串)和年龄(整数),该程序最多接受10个项,除非用户输入“完成”或“完成”,然后输出数组项

在数组输出之后,我现在希望程序输出数组中最年轻和最老的成员

我似乎不知道如何获取并显示这些数据

有什么建议吗

谢谢

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 );
    }
}

共 (1) 个答案

  1. # 1 楼答案

    只需添加两个变量来保存这些信息:

       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());
          }
        }