지금 자바 vector 를 이용해서 정보 입력하는 것을 하고 있습니다.
private Vector<scheduleInfo> vc = new Vector<scheduleInfo>(10, 5); //스케줄들을 담을 곳
private scheduleInfo info = new scheduleInfo(); //스케줄 하나의 정보
private Scanner sc = new Scanner(System.in);
private int year;
private int month;
private int date1;
public void inputSche(){ //일정 입력
DateInput();
info.setDate(year, month, date1);
System.out.println("input the contents : ");
String contents = sc.nextLine();
info.setContents(contents);
vc.addElement(info);
System.out.println("input complete");
}
여기가 입력 받는 부분인데요 DateInput() 에서 날짜 입력받고,
scheduleInfo 클래스 안에서 setDate, setContents 메소드를 정의해서 날짜랑 내용 입력받게 했습니다.
그리고 나서 벡터에 추가하게 해서 그 내용들이 하나하나 벡터에 들어가게 했습니다.
inputSche 메소드를 두번 출력하면 벡터에 그 정보들이 두개가 들어가서
출력을 할 경우 두개가 모두 나와야 하는데
맨 마지막에 넣은 정보만 inputSche 메소드를 호출한 횟수만큼 나옵니다.
제 생각대로 scheduleInfo 객체의 정보들을 Vector객체에 넣고,
해당하는 것들을 꺼내서 보게 하려면 어떻게 해야되죠?ㅠㅠ
설명이 이해가 안가실수도 있겠네요 ㅠㅠ
어떤 객체요?ㅋㅋㅋ 전 info 그건 하나로 해서 여기다가 정보 집어넣고
vector 에다가 하나씩 넣으면 vector 에 차례대로 쌓여 들어가지 않을까 라는 생각에서 그렇게 한거에요 ㅋㅋ
private Vector<scheduleInfo> vc = new Vector<scheduleInfo>(10, 5); //스케줄들을 담을 곳
private scheduleInfo info = new scheduleInfo(); //스케줄 하나의 정보
private Scanner sc = new Scanner(System.in);
private int year;
private int month;
private int date1;
public void inputSche(){ //일정 입력
DateInput();
info.setDate(year, month, date1);
System.out.println("input the contents : ");
String contents = sc.nextLine();
info.setContents(contents);
vc.addElement(info);
System.out.println("input complete");
}
규욱이형 말대로, info 인스턴스를 공유해서 발생하는 문제같다.
일정 입력할때마다.. 새로운 info 인스턴스를 생성해서, vc 안에 넣어줘야해..
매번 info에 새로운 내용을 써서, vc.addElement(info)를 하더라도 컬랙션은 참조로 들어가기 때문에..
info 인스턴스는 결국 하나로 공유되는 상태가 된거징..
아래와 같이 수정해보는건 어떨깡?
public void inputSche(){ //일정 입력
DateInput();
info.setDate(year, month, date1);
System.out.println("input the contents : ");
String contents = sc.nextLine();
scheduleInfo info = new scheduleInfo(); //스케줄 하나의 정보
info.setContents(contents);
vc.addElement(info);
System.out.println("input complete");
}
private scheduleInfo info = new scheduleInfo(); //스케줄 하나의 정보
이거를
public void inputSche()
이 함수 안에다 선언하면 어떻게 되니..?
내생각엔 객체를 하나만 생성해놓고 그걸 계속 다른값으로 덮어써서 그런거같은데..