我有一个Java程序,最多存储10个名称(字符串)和年龄(整数)的arrayList项目,程序最多接受10个项目,除非用户输入' done'或者' DONE'然后输出数组的项目。
在数组输出之后,我现在希望程序输出数组中最年轻和最老的成员。
我似乎无法弄清楚如何获取此数据并显示它。
有什么建议吗?
谢谢。
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 :(得分:0)
只需添加两个变量即可保存这些信息:
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());
}
}