자바 복습 프로젝트

DONI·2021년 10월 4일
0

Java

목록 보기
40/46
post-thumbnail

🚩 복습문제 1

문제

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;
	}
}

🚩 복습문제 2

문제

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() 메서드 생략 가능
	}
}

🚩 복습문제 3

문제

입력 받은 값을 이용하여 학생 객체를 생성하고 학생 정보를 모두 출력
(입력 받을 때 사용할 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);
	}	
}

🚩 복습문제 4

문제

문제 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();
				// 입력 버퍼에 남아있는 잘못 입력된 내용을 얻어와 비워줌으로써
				// 다음 정수 입력 시 문제가 발생하지 않도록 함
				
			}
		}
	}
}

🚩 복습문제 5

문제

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]);
	}
}

🚩 복습문제 6

문제

아래 실행화면 처럼 동작하는 코드를 작성하시오. (학생 배열은 제공)

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;
		}
	}
}
profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글