ddit/Java

ArrayList를 이용한 학생리스트만들기 문제풀기/toString사용법

ssong2ku 2022. 6. 8. 19:55
728x90

문제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
 
실행클래스에서 학생정보를 입력하는 메소드(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
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

728x90