edu.kh.review.model.vo 패키지에 Student 클래스를 생성
필드 : 학번, 이름, 학년, 반, 성별('남' 또는 '여')
생성자 : 기본 생성자, 매개변수 있는 생성자 (필드 전부 초기화)
메서드 : getter / setter, toString( ) 오버라이딩
public class Student {
/*
필드 : 학번, 이름, 학년, 반, 성별('남' 또는 '여')
생성자 : 기본 생성자, 매개변수 있는 생성자 (필드 전부 초기화)
메서드 : getter / setter, toString() 오버라이딩
*/
private int number; // 학번
private String name; // 이름
private int grade; // 학년
private int room; // 반
private char gender; // 성별('남' 또는 '여')
// 기본 생성자
public Student() {
}
// 매개변수 있는 생성자 (필드 전부 초기화)
public Student(int number, String name, int grade, int room, char gender) {
super();
this.number = number;
this.name = name;
this.grade = grade;
this.room = room;
this.gender = gender;
}
// getter 메서드 : 필드에 기록된 값을 읽어서 요청한 쪽으로 읽은 값을 넘기는 메서드
public int getNumber () {
return number;
}
public String getName() {
return name;
}
public int getGrade() {
return grade;
}
public int getRoom() {
return room;
}
public char getGender() {
return gender;
}
// setter 메서드 : 필드에 변경할 값을 전달 받아서 필드 값을 변경하는 메서드
public void setNumber(int number) {
this.number = number;
}
public void setName(String name) {
this.name = name;
}
public void setGrade(int grade) {
this.grade = grade;
}
public void setRoom(int room) {
this.room = room;
}
public void setGender(char gender) {
this.gender = gender;
}
// toString() 오버라이딩
@Override
public String toString() {
return number + " / " + name + " / " + grade + " / " + room + " / " + gender;
}
}
Student 객체 2개를 각각 기본 생성자, 매개변수 있는 생성자로 생성하고
필드를 아래에 지정된 값으로 초기화 후 저장된 필드 정보를 모두 출력
학생1> 학번:21001, 이름:이동준, 학년:1, 반:5, 성별:'남'
학생2> 학번:20345, 이름:김민서, 학년:2, 반:3, 성별:'여'
학생1 : 21001 / 이동준 / 1 / 5 / 남
학생2 : 20345 / 김민서 / 2 / 3 / 여
import edu.kh.review.model.vo.Student;
public class ReviewService {
public void practice2() {
// 기본 생성자로 Student 객체 stu1 생성
Student stu1 = new Student();
// 필드 초기화
stu1.setNumber(21001);
stu1.setName("이동준");
stu1.setGrade(1);
stu1.setRoom(5);
stu1.setGender('남');
// 매개변수 있는 생성자로 Student 객체 stu2 생성 + 필드 초기화
Student stu2 = new Student(20345, "김민서", 2, 3, '여');
// 필드 정보 출력
System.out.println("학생1 : " + stu1.toString());
System.out.println("학생2 : " + stu2); //toString() 메서드 생략 가능
}
}
입력 받은 값을 이용하여 학생 객체를 생성하고 학생 정보를 모두 출력
(입력 받을 때 사용할 Scanner 객체는 ReviewService 클래스의 필드에 생성)
학번 : 22453
이름 : 김철수
학년 : 1
반 : 2
성별 : 남
입력 받은 학생 정보 : 22453 / 김철수 / 1 / 2 / 남
import java.util.Scanner;
import edu.kh.review.model.vo.Student;
public class ReviewService {
// ReviewService 클래스의 필드에 Scanner 객체 생성
Scanner sc = new Scanner(System.in);
public void practice3() {
System.out.print("학번 : ");
int number = sc.nextInt();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("학년 : ");
int grade = sc.nextInt();
System.out.print("반 : ");
int room = sc.nextInt();
System.out.print("성별 : ");
char gender = sc.next().charAt(0);
// 입력 받은 값을 이용하여 Student 객체 stu3 생성
Student stu3 = new Student(number, name, grade, room, gender);
// 입력 받은 학생 정보 모두 출력
System.out.println("입력 받은 학생 정보 : " + stu3);
}
}
문제 3번처럼 학생 한 명의 정보를 입력 받고 출력
단, 입력 중 자료형에 맞지 않는 값을 입력 하는 경우 (InputMismatchException)
처음 부터 다시 입력 받기
학번 : 22453
이름 : 김철수
학년 : 일학년
자료형에 맞지 않는 값이 입력되었습니다. 다시 입력해주세요.
학번 : 22453
이름 : 김철수
학년 : 1
반 : 2
성별 : 남
입력 받은 학생 정보 : 22453 / 김철수 / 1 / 2 / 남
import java.util.InputMismatchException;
import java.util.Scanner;
import edu.kh.review.model.vo.Student;
public class ReviewService {
// ReviewService 클래스의 필드에 Scanner 객체 생성
Scanner sc = new Scanner(System.in);
public void practice4() {
while (true) {
// try ~ catch문으로 에러 처리
// 입력 중 자료형에 맞지 않는 값을 입력 하는 경우 -> InputMismatchException 에러 발생
try {
System.out.print("학번 : ");
int number = sc.nextInt();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("학년 : ");
int grade = sc.nextInt();
System.out.print("반 : ");
int room = sc.nextInt();
System.out.print("성별 : ");
char gender = sc.next().charAt(0);
// 입력 받은 값을 이용하여 Student 객체 stu4 생성
Student stu4 = new Student(number, name, grade, room, gender);
// 입력 받은 학생 정보 모두 출력
System.out.println("입력 받은 학생 정보 : " + stu4);
break;
} catch (InputMismatchException e) {
System.out.println("자료형에 맞지 않는 값이 입력되었습니다. 다시 입력해주세요.");
sc.nextLine();
// 입력 버퍼에 남아있는 잘못 입력된 내용을 얻어와 비워줌으로써
// 다음 정수 입력 시 문제가 발생하지 않도록 함
}
}
}
}
3명의 학생 정보를 입력 받아 Student 객체 배열에 저장한 후 출력
1번째 학생 정보 입력
학번 : 100
이름 : 이미진
학년 : 5
반 : 5
성별 : 여
2번째 학생 정보 입력
학번 : 200
이름 : 김성연
학년 : 6
반 : 6
성별 : 남
3번째 학생 정보 입력
학번 : 300
이름 : 김사랑
학년 : 4
반 : 4
성별 : 여
1번째 학생 : 100 / 이미진 / 5 / 5 / 여
2번째 학생 : 200 / 김성연 / 6 / 6 / 남
3번째 학생 : 300 / 김사랑 / 4 / 4 / 여
import java.util.Scanner;
import edu.kh.review.model.vo.Student;
public class ReviewService {
// ReviewService 클래스의 필드에 Scanner 객체 생성
Scanner sc = new Scanner(System.in);
public void practice5() {
// Student 객체 배열 stu5 선언 및 할당
Student[] stu5 = new Student[3];
for (int i = 0; i < stu5.length; i++) {
System.out.println(i + 1 + "번째 학생 정보 입력");
System.out.print("학번 : ");
int number = sc.nextInt();
System.out.print("이름 : ");
String name = sc.next();
System.out.print("학년 : ");
int grade = sc.nextInt();
System.out.print("반 : ");
int room = sc.nextInt();
System.out.print("성별 : ");
char gender = sc.next().charAt(0);
// 학생 정보를 입력 받아 객체 배열 초기화
stu5[i] = new Student(number, name, grade, room, gender);
}
// 학생 정보 출력
for (int i = 0; i < stu5.length; i++)
System.out.println(i + 1 + "번째 학생 : " + stu5[i]);
}
}
아래 실행화면 처럼 동작하는 코드를 작성하시오. (학생 배열은 제공)
Student[ ] stdList =
{ new Student(21001, "김동현", 1, 3, '남'),
new Student(21002, "이혜정", 1, 7, '여'),
new Student(20003, "정은지", 2, 9, '여'),
new Student(19027, "김동현", 3, 2, '남'),
new Student(19030, "이상현", 3, 7, '남')
};
==검색 주제 선택==
1. 이름
2. 학년
3. 반
4. 성별
0. 종료
검색 선택 >> 8
잘못 입력하셨습니다. 다시 선택해주세요.
==검색 주제 선택==
1. 이름
2. 학년
3. 반
4. 성별
0. 종료
검색 선택 >> 1
이름 입력 : 이혜정
21002 / 이혜정 / 1 / 7 / 여
검색 결과 : 1명
==검색 주제 선택==
1. 이름
2. 학년
3. 반
4. 성별
0. 종료
검색 선택 >> 2
학년 입력 : 1
21001 / 김동현 / 1 / 3 / 남
21002 / 이혜정 / 1 / 7 / 여
검색 결과 : 2명
==검색 주제 선택==
1. 이름
2. 학년
3. 반
4. 성별
0. 종료
검색 선택 >> 3
반 입력 : 7
21002 / 이혜정 / 1 / 7 / 여
19030 / 이상현 / 3 / 7 / 남
검색 결과 : 2명
==검색 주제 선택==
1. 이름
2. 학년
3. 반
4. 성별
0. 종료
검색 선택 >> 4
성별 입력 : 여
21002 / 이혜정 / 1 / 7 / 여
20003 / 정은지 / 2 / 9 / 여
검색 결과 : 2명
==검색 주제 선택==
1. 이름
2. 학년
3. 반
4. 성별
0. 종료
검색 선택 >> 0
프로그램 종료
import java.util.Scanner;
import edu.kh.review.model.vo.Student;
public class ReviewService {
// ReviewService 클래스의 필드에 Scanner 객체 생성
Scanner sc = new Scanner(System.in);
public void practice6() {
// Student 객체 배열 stu6 선언, 할당 및 초기화
Student[] stu6 = {
new Student(21001, "김동현", 1, 3, '남'),
new Student(21002, "이혜정", 1, 7, '여'),
new Student(20003, "정은지", 2, 9, '여'),
new Student(19027, "김동현", 3, 2, '남'),
new Student(19030, "이상현", 3, 7, '남')
};
int search;
String schName;
int schGrade;
int schRoom;
char schGender;
int count = 0;
while (true) {
System.out.println("==검색 주제 선택==");
System.out.println("1. 이름");
System.out.println("2. 학년");
System.out.println("3. 반");
System.out.println("4. 성별");
System.out.println("0. 종료");
System.out.print("검색 선택 >> ");
search = sc.nextInt();
switch (search) {
case 1:
System.out.print("이름 입력 : ");
schName = sc.next();
for (int i = 0; i < stu6.length; i++) {
if (schName.equals(stu6[i].getName())) {
System.out.println(stu6[i]);
count++;
}
}
System.out.println("검색 결과 : " + count + "명\n");
count = 0;
continue;
case 2:
System.out.print("학년 입력 : ");
schGrade = sc.nextInt();
for (int i = 0; i < stu6.length; i++) {
if (schGrade == stu6[i].getGrade()) {
System.out.println(stu6[i]);
count++;
}
}
System.out.println("검색 결과 : " + count + "명\n");
count = 0;
continue;
case 3:
System.out.print("반 입력 : ");
schRoom = sc.nextInt();
for (int i = 0; i < stu6.length; i++) {
if (schRoom == stu6[i].getRoom()) {
System.out.println(stu6[i]);
count++;
}
}
System.out.println("검색 결과 : " + count + "명\n");
count = 0;
continue;
case 4:
System.out.print("성별 입력 : ");
schGender = sc.next().charAt(0);
for (int i = 0; i < stu6.length; i++) {
if (schGender == stu6[i].getGender()) {
System.out.println(stu6[i]);
count++;
}
}
System.out.println("검색 결과 : " + count + "명\n");
count = 0;
continue;
case 0:
System.out.println("프로그램 종료\n");
break;
default:
System.out.println("잘못 입력하셨습니다. 다시 선택해주세요.\n");
continue;
}
break;
}
}
}