문제2] 학생클래스는 학번(정수), 이름(문자열), 점수(정수)의 속성을 가짐,
초기값을 이용하여 객체생성하는 생성자 메소드와 gettr, setter, toString을 가짐
실행클래스에서 학생정보를 입력하는 메소드(insertScore())와
전체 학생을 조회하는 메소드(selectAll())와
이름을 입력받아 해당 학생정보를 출력하는 selectOne()메소드 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
package chapter12;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentArray {
private int stId;
private String stName;
private int grade;
public StudentArray() {}
public StudentArray(int stId,String stName,int grade) {
this.stId=stId;
this.stName=stName;
this.grade=grade;
}
public int getStId() {
return stId;
}
public void setStId(int stId) {
this.stId = stId;
}
public String getStName() {
return stName;
}
public void setStName(String studName) {
this.stName = studName;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public String toString() {
return "학번="+getStId()+"\n이름=" +getStName()+"\n성적="+getGrade();
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
package chapter12;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Iterator;
public class StudentArrayEx {
static ArrayList<StudentArray> list = new ArrayList<StudentArray>();
static StudentArray st = new StudentArray();
//생성자 메소드의 데이터 정의
static Scanner scr = new Scanner(System.in);
public static void main(String[] args) {
while(true){
System.out.println("메뉴\n1. 입력\n2. 전체조회\n3.개별조회\n4. 종료");
System.out.println("\n메뉴선택 : ");
int sel =scr.nextInt();
//메뉴선택
if(sel==1) {
insertScore();
}else if(sel==2) {
selectAll();
}else if(sel==3){
selectOne();
}else if(sel==4){
System.out.println("종료");
break;
}
}
}
public static void insertScore(){
System.out.println("입력할 학생 수 : ");
int n = scr.nextInt();
for(int i=0; i<n;i++) {
System.out.println("정보입력");
System.out.println("학번입력 : ");
//st.setStId(scr.nextInt());
int stId=scr.nextInt();
System.out.println("이름입력 : ");
String stName=scr.next();
//st.setStName(scr.next());
System.out.println("점수입력 : ");
//st.setGrade(scr.nextInt());
int grade=scr.nextInt();
//list.add(new StudentArray());
StudentArray s = new StudentArray(stId,stName,grade);
list.add(s);
}
}
public static void selectAll(){
System.out.println("전체 학생 정보 조회");
for (StudentArray st : list) {
System.out.println(st);
System.out.println("===================");
}
}
public static void selectOne(){
Iterator <StudentArray> itr = list.iterator();
boolean flag=false;
System.out.println("이름 입력 : ");
String name =scr.next();
while(itr.hasNext()) {
st =itr.next();
if(name.equals(st.getStName())) {
System.out.println(st);
flag = true;
break;
}
}
if(flag==false) {
System.out.println("찾는 학생정보가 없음");
}
}
}
|
cs |
● toString을 이용하여 객체값 출력
- toString()메소드는 Java의 모든 클래스의 조상클래스 인
Object클래스의 일부로 모든 클래스에 자체toString()메소드가 있음을 의미
- Object 클래스에게 상속받아 재정의(오버라이딩 Overriding)하여 사용
(별도로 extends 하지 않아도 컴파일 시 자동으로 상속)
->재정의 안하면 객체의 주소값 출력
- toString을 직접 호출하지 않아도 어떤 객체를 System.out.print로 호출하면
자동으로 toString이 호출되도록 약속.
- Object에서 상속받은 메서드. 클래스 정보를 간단히 출력
- Println()에 넘겨주는 값이 String타입이 아니라면 println()은
그 객체에 대해 toString()을 호출한 후 그 리턴값을 출력
System.out.println(obj.toString());
System.out.println(obj);
- 위 예시에서 두개의 코드는 같은 결과값을 출력
즉 println()으로 객체의 값을 출력할 때는 toString()은 항상 생략되어
붙어있어서 번거롭게 toString()을 호출할 필요x
'ddit > Java' 카테고리의 다른 글
java eclipse에서 oracle계정 연동, 시퀀스, 프로시저 (0) | 2022.06.09 |
---|---|
HashMap (0) | 2022.06.08 |
컬렉션프레임워크<ArrayList, iterator> (0) | 2022.06.07 |
제네릭(generic), 컬렉션 프레임워크 (Collection Framework) (0) | 2022.06.04 |
java.lang 패키지 (0) | 2022.06.02 |