배열, 객체 문제인데
배열에 각각 나이랑 boolean 으로 저장된거 개수 구하는 부분이 에러가나네..
문법적으로 오류가 없는데 왜일까...
한번만 봐줘...
import java.util.*;
public class Test8 {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
String name;
int age, size=0;
boolean idcard;
Person a[] = new Person[5];
System.out.println(\"회원정보를 입력합니다\");
System.out.println(\"이름이 \'quit\'면 입력 종료\");
for(int i=0;i<=a.length-1;i++){
System.out.print(\"=>name : \");
name = input.nextLine();
if(name.equals(\"quit\")){
break;
}
System.out.print(\"=>age : \");
age = input.nextInt();
System.out.print(\"=>idcard : \");
idcard = input.nextBoolean();
a[i] = new Person(name,age,idcard);
input.nextLine();
size ++;
}
System.out.println(\"입력하신 회원정보를 모두 저장했습니다.\");
System.out.println(\"검색결과 입니다.\");
System.out.println(\"=> 10세 이하 어린이 수 : \"+ Person.getCountChild(a,size));
System.out.println(\"=> ID카드 소지자 : \" + Person.getCountId(a,size));
}
}
class Person{
private String name;
private int age;
private boolean idCard;
public Person(){}
public Person(String n, int a, boolean i){
this.name = n;
this.age = a;
this.idCard = i;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public boolean getIdCard(){
return this.idCard;
}
public void setName(String n){
this.name = n;
}
public void setAge(int a){
this.age = a;
}
public void setIdCard(boolean i){
this.idCard = i;
}
public static int getCountChild(Person[] a, int s){
int count = 0;
for(int i=0;i<=s;i++){
if(a[i].getAge() <= 10){
count++;
}
}
return count ++;
}
public static int getCountId(Person[] a, int s){
int count = 0;
for(int i=0;i<=s;i++){
if(a[i].getIdCard() == true){
count++;
}
}
return count;
}
}
자바 자주 안해서 그러는데 Person[] a 맞냐? Person a[]아닌가?
그거 선언 방식은 여러개라서 상관없는것 같애..
문법적인 오류는 없오...
이거 자처하고 String + number == String 되나.. 파이썬에선 확실히 됐던 것 같긴 한데
Exception in thread \"main\" java.lang.NullPointerException at Person.getCountChild(Test8.java:75) at Test8.main(Test8.java:34)
오류는 이건뎅..ㅠㅠ
흔한 널포인터익셉션
자바는 String 비교할때 equals methood 쓰는것같애..
근데 매개변수로 내가 Person 배열을 넘겼는데 왜 method에서 내가 넘긴 매개변수.getAge가 오류가 나는지... ㅠㅠ
i<=s대신 i<s로 해봐.
i<s 해도 똑같애ㅠㅠ
둘다해도?
s가 size로 내가 몇개 배열까지 입력했는지 저장해놓은 변수라서 0부터시작하니까 참조오류가 될만한 부분이 아닌 것 같앰..
오잉
i<s로 하니까 되네??
아 애초에 내가 0부터 시작했으니깐 첫번째 배열을 생성하면 1이되서 오류가 났었네
오홍 고마워 형
a에 생성 하나도 안 줬을 때를 생각해보니까 그래도 get을 하더라구. 아마 로직이 한 칸 더 읽어서 널포인터익셉션 난듯.
ㅇㅇ시험잘봐
웅 그런것 같애 그래서 형이 말한 방법대로 size를 계산해서 하거나 아니면 처음부터 초기값으로 배열을 초기화해줘야되넹.. 고맙당 ㅠㅠ 기초적인거였는데 하도 배열메소드만 하다보니깐 머리가뱅뱅뱅뱅 고마워욤~