0. 클래스란?
학교에 홍길동, 김철수 등 많은 학생들이 있다.
이때, 공통으로 묶을 수 있는 것은 학생이고, 이것을 클래스라고 함
-> 한마디로 일반화된 속성과 메소드로 객체를 기술한 것을 클래스라고 함
1. 클래스의 기본 구성
2. 포함멤버
3. 객체 (Object)
4. 클래스와 객체
5. 클래스 사용법
6. 생성자
7. this, this 메소드
8. 객체의 사용
9. 방 관리 프로그램 작성하기
package ch06;
import java.io.IOException;
import java.util.Scanner;
class Room {
boolean room[];
Scanner sc;
int roomsu;
Room() throws IOException {
sc = new Scanner(System.in);
System.out.print("방의 갯수를 입력 : ");
roomsu = sc.nextInt();
room = new boolean[roomsu];
start();
}
public void start() throws IOException{
while(true) {
System.out.print("1. 입실 2. 퇴실 3. 방보기 4.종료");
int select = System.in.read() - 48; // 아스키코드 값으로 들어오기 때문에 -48해줘야 한다.
sc.nextLine(); // 엔터키가 들어올 때 까지 입력을 받겠다.
switch (select) {
case 1 :
input(); break;
case 2 :
output(); break;
case 3 :
view(); break;
case 4 :
exit(); break;
default :
System.out.println("잘못입력하셨습니다!");
}
}
}
Room(int roomsu){
room = new boolean[roomsu]; //roomsu만큼 받겠다. 참일때는 사람이 있고 거짓일때는 사람이 없다.
// 배열을 맨 처음 선언해주면 boolean의 초기값을 false로 만들어진다.
sc = new Scanner(System.in);
this.roomsu = roomsu;
}
public void input() {
int roomNumber;
do {
System.out.print("입실하실 방의 번호 : ");
roomNumber = sc.nextInt();
} while(roomNumber < 1 || roomNumber > roomsu);
// if (roomNumber < 1 || roomNumber > roomsu) input(); // input을 다시 실행
if (room[roomNumber-1]) { // roomNumber-1호실이 참이다 -> 사람이 있다.
System.out.println(roomNumber + "호실은 사용중입니다.");
}else {
System.out.println(roomNumber + "호실에 입실하셨습니다.");
room[roomNumber-1] = true; // 입실하는 순간 true로 바꿔준다.
}
}
public void output() {
int roomNumber;
do {
System.out.print("퇴실하실 방의 번호 : ");
roomNumber = sc.nextInt();
} while(roomNumber < 1 || roomNumber > roomsu);
// if (roomNumber < 1 || roomNumber > roomsu) input(); // input을 다시 실행
if (!room[roomNumber-1]) { // roomNumber-1호실이 참이다 -> 사람이 있다.
System.out.println(roomNumber + "호실은 빈 방입니다.");
}else {
System.out.println(roomNumber + "호실에 퇴실하셨습니다.");
room[roomNumber-1] = false; // 입실하는 순간 true로 바꿔준다.
}
}
public void view() {
for (int i = 0; i < roomsu; ++i) {
if (room[i]) {
// 만약 방에 사람이 있을 때
System.out.println(i+ 1 + "호실은 사용중입니다.");
}
else {
System.out.println(i + 1 + "호실은 빈 방 입니다.");
}
}
}
public void exit() {
System.out.print("프로그램을 종료합니다.");
System.exit(0); // 프로그램을 영구히 종료합니다.
}
}
public class Exam_01 {
public static void main (String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
Room room = new Room(); // 객체를 생성해준다.
}
}
[출력]
10. 클래스 배열
11. 문제 풀어보기
package ch06;
import java.util.Scanner;
class SungJuk{
String name;
int kor, eng, mat;
int tot, rank;
public void sumTot() {
tot = kor + eng + mat;
}
public void disp() {
System.out.print(name + "\t");
System.out.print(kor + "\t");
System.out.print(eng + "\t");
System.out.print(mat + "\t");
System.out.print(tot + "\t");
System.out.println(rank + "\t");
}
}
public class Exam_02 {
public static void main(String[] args) {
System.out.print("인원수를 입력 : ");
Scanner sc = new Scanner(System.in);
int inwon = sc.nextInt();
SungJuk sj[] = new SungJuk[inwon];
// 참조 변수의 갯수만 들어간 상태
for (int i = 0; i < inwon; ++i) {
sj[i] = new SungJuk();
// 생성자를 생성해 주어야지만 실제로 데이터가 만들어지고
// 메모리상에 저장할 수 있는 공간이 생겨 값이 들어갈 수 있다.
System.out.print("이름 입력 : ");
sj[i].name = sc.next();
System.out.print("국어점수 입력 : ");
sj[i].kor = sc.nextInt();
System.out.print("영어점수 입력 : ");
sj[i].eng = sc.nextInt();
System.out.print("수학점수 입력 : ");
sj[i].mat = sc.nextInt();
sj[i].sumTot();
sj[i].rank = 1;
}
for (int i = 0; i < inwon; ++i) {
for (int j = 0; j < inwon; ++j) {
if(sj[i].tot < sj[j].tot) sj[i].rank++;
}
}
System.out.print("이름\t국어\t영어\t수학\t총점\t순위\n");
for (int i = 0; i < inwon; ++i) {
sj[i].disp();
}
}
}
[출력]
'Study > Java' 카테고리의 다른 글
Java 클래스_클래스기초Ⅱ (0) | 2023.01.06 |
---|---|
Java 배열과 메소드_메소드의 개요 (0) | 2023.01.02 |
Java 배열과 메소드_배열의 개요 (0) | 2022.12.29 |
Java 제어문과 반복문_반복문 (0) | 2022.12.28 |
Java 제어문과 반복문_제어문 (0) | 2022.12.27 |