我正在處理一個提示用戶輸入姓名,年齡和性別的程序。該程序應該給我一個名稱,年齡和性別從每個輸入的列表,並告訴我誰是誰從這個名單中最古老的人。我創建了一個ArrayList來保存這些值,我確定使用增強的循環打印出名稱,年齡和性別。我遇到的麻煩是讓程序從ArrayList打印出最高(最老)的數字。我創建了一種替代方法來創建一個只有年齡的附加ArrayList,但我似乎沒有找到從原始ArrayList中獲取此方法的方法。這種替代方式只給出了額外數組中最高的數字,但如果我想打印年齡最大的人的姓名,它將不起作用。我會感謝一些幫助弄清楚這一點。我對Java真的很陌生。從不同數據類型的ArrayList獲取最高編號
這裏我到目前爲止的代碼:
從Person類:
package person;
public class Person {
private String name ;
private int age;
private String gender;
private int oldestPerson;
public Person(String name1, int age1, String gender1){
name = name1;
age = age1;
gender = gender1;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getGender() {
return gender;
}
public void changeName(String newName){
name = newName;
}
public void changeAge(int newAge){
age = newAge;
}
public void changeGender(String newGender){
gender = newGender;
}
public int getOldest(int max){
if (age > max){
max = age;
}
return oldestPerson;
}
}
從personTester類:
package person;
import java.util.Scanner;
import java.util.ArrayList;
public class personTester {
public static void main(String [] args){
ArrayList<Person> personList = new ArrayList<Person>();
ArrayList<Integer> personAges = new ArrayList<Integer>(); //extra array
boolean Done = false;
Scanner input = new Scanner(System.in);
while(!Done){
System.out.println("enter a name");
String name = input.next();
System.out.println("enter an age");
int age = input.nextInt();
System.out.println("enter a gender");
String gender= input.next();
personList.add(new Person(name, age, gender)); //put a person inside an arraylist
personAges.add(new Integer(age));
System.out.println("Press Y to exit or N to continue");
String choice = input.next();
if(choice.equalsIgnoreCase("Y")){
Done=true;
}
}
for(Person e :personList){
System.out.println("Name: "+e.getName() +" - Age: "+ e.getAge()+" -
Gender: " + e.getGender());
} // getting the highest number from the aditional array.
int max = 0;
for (int ages: personAges){
if (ages > max){
max = ages;
}
}
System.out.println("The oldest person in the list is " + max);
}
}
非常感謝你!這真的爲我澄清! – Monique
@Monique不客氣! :)既然你已經說過你是Java新手,我保持基本,沒有太多新東西。確實,你也可以使用'Comparator'或者Java 8 lambda來解決這個問題,就像其他答案一樣,但是這樣做會讓你的代碼變得太過分了,恕我直言。最重要的是要知道你的代碼出了什麼問題,爲什麼,所以下次你可以自己解決它。 ;) –