最近Javaの勉強を始めた初学者です。
前提・実現したいこと
配列の中のPersonオブジェクトの中で、
最も年齢の小さいオブジェクトの参照を返したいです。
発生している問題・エラーメッセージ
Exception in thread "main" java.lang.NullPointerException
at package.Age.main(Age.java:27)
//結果:18とコメントアウトしている部分の中にmainクラスで宣言した配列[0]の年齢を入れて
for文とif文で「18よりも小さい年齢が存在していた場合、ageにその値を入れる」という処理をしているのですが、
用意した配列p1 ~ p3の中に18よりも小さい数字がないためぬるぽが返されてしまいます。
(”こうせい”, 18)以下の年齢を18より若くすれば正常終了します。
iのカウントをint i = 0;にしてみたり比較が違う?など考えましたが上手くいかず、
どう修正すればよいのか解決に至りませんでしたのでご教示いただきたいです。
該当のソースコード
Java.Age
1public class Age { 2Person getYoungest(Person[] persons) { 3 4 int age = persons[0].getAge(); //結果:18 5 6 for (int i = 1; i < persons.length; i++) { 7 if (age >= persons[i].getAge()) { //ここが違う? 8 age = persons[i].getAge(); 9 return persons[i]; 10 } 11 12 } 13 return null; 14} 15 16public static void main(String[] args) { 17 Age age = new Age(); 18 Person p0 = new Person("こうせい", 18); 19 Person p1 = new Person("まさこ", 23); 20 Person p2 = new Person("のぶ代", 35); 21 Person p3 = new Person("わさび", 48); 22 23 Person[] person = {p0, p1, p2, p3}; 24 Person p = age.getYoungest(person); 25 System.out.println(p.getName() + "," + p.getAge()); 26} 27}
Java.Person
1public class Person { 2 private String name; 3 private int age; 4 5 Person(String name, int age) { 6 this.name = name; 7 this.age = age; 8 } 9 10 String getName() { 11 return name; 12 } 13 14 int getAge() { 15 return age; 16 } 17}
よろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/21 14:55
2020/07/21 15:07