我正在尝试编写一个包含2个数组的程序,两个数组都固定为值10。
程序应该询问用户名称(字符串)10次,每个姓名的年龄(整数)10次
直到阵列已满(已输入10个姓名和年龄,或者用户输入'完成'一词)
然后打印出每个人的姓名和相关年龄以及最年轻和最年长的成员。
如何将数组限制为10个类型字符串项,而不是用户决定(代码当前正在执行)
有什么建议吗?
感谢。
import java.util.Scanner;
public class NameAge {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter number of elements to be sorted: ");
String numElements = input.nextLine();
String[] num = new String[Integer.parseInt(numElements)];
for (int i = 0; i < Integer.parseInt(numElements); i++) {
System.out.print("Enter name " + (i + 1) + ": ");
num[i] = input.nextLine();
}
for(String element : num) {
System.out.println(element);
}
}
}
答案 0 :(得分:0)
我使用ArrayList
来获得列表的动态大小,而String []是不可能的。程序循环10次并在此之后停止,或者如果用户输入&#34;完成&#34;作为名称(使用break;
)。我将数据保存为Pair
,这使得关联数据变得简单。
import javafx.util.Pair;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class NameAge {
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.equals("done")) break;
System.out.print("Enter age for user " + (i + 1)+ ": ");
Integer age = Integer.parseInt(input.nextLine());
names.add(new Pair<String, Integer>(line, age));
}
names.forEach(System.out::println);
}
}
答案 1 :(得分:0)
我争论使用while循环代替休息(因为我厌恶休息)。
entry.toUpperCase.equals("DONE")
循环直到完成输入已输入10个条目。而不只是检查&#34;完成&#34;我还检查null
是否允许不区分大小写。对于数组,如果您不打算填写它,那么在输出时也值得检查{{1}}。
顺便说一句:当你完成它们时,不要忘记关闭扫描仪!
答案 2 :(得分:0)
我认为max_age
和min_age
只有一个。我使用class Person
来整理name
和age
信息。
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class NameAge {
class Person{
String name;
int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
}
private final int MAX_NUMS = 10;
private final String END_FLAG = "done";
private List<Person> personList = new LinkedList<Person>();
public void process(){
Scanner scan = new Scanner(System.in);
Person oldestPerson = new Person(null,Integer.MIN_VALUE);
Person youngestPerson = new Person(null,Integer.MAX_VALUE);
System.out.println("input name and age, split them by space");
int number = 1;
while(number<=MAX_NUMS){
String curLine = scan.nextLine();
if(curLine.toLowerCase().trim().equals(END_FLAG)){
break;
}
else{
String[] strs = curLine.split(" ");
String name = strs[0];
int age = Integer.valueOf(strs[1]);
Person newPerson = new Person(name,age);
personList.add(newPerson);
if(oldestPerson.age<newPerson.age){
oldestPerson = newPerson;
}
if(youngestPerson.age>newPerson.age){
youngestPerson = newPerson;
}
}
}
scan.close();
for(Person p :personList){
System.out.println(p.name+" "+p.age);
}
System.out.println("yougest Person:" + youngestPerson.name+" "+youngestPerson.age);
System.out.println("oldest Person:" + oldestPerson.name+" "+oldestPerson.age);
}
public static void main(String[] args) {
NameAge na = new NameAge();
na.process();
}
}