코딩항해기
[실습/JAVA] 학생으로 클래스 연습하기 (+풀이 0701) 본문
[문제]
(상속은 아직 진도 나가지 않아 상속은 진행하지 않음)
1. 학생 클래스가 있습니다.
학생은 이름,성적(정수)이 있습니다.
학생은 반드시 이름을 가져야합니다.
학생을 생성할때, 성적이 0~100점 사이로 랜덤 저장됩니다.
학생이 hello() 인사를 하면, 이름과 성적을 화면에 출력합니다.
2. 학생 클래스가 있습니다.
학생은 이름,성적(정수),등급(char)이 있습니다.
학생은 반드시 이름을 가져야합니다.
학생을 생성할때, 성적이 0~100점 사이로 랜덤 저장됩니다.
성적이 0~59 C 60~79 B 80~100 A 등급입니다.
학생이 hello() 인사를 하면, 이름과 성적, 등급을 화면에 출력합니다.
학생이 test() 시험을 보면, 성적이 현재성적점수 +10점이 됩니다.
3. 학생 클래스가 있습니다.
학생은 학번(PK,정수),이름,성적(정수),등급(char)이 있습니다.
학생은 반드시 이름을 가져야합니다.
학생을 생성할때, 성적이 0~100점 사이로 랜덤 저장됩니다.
학생의 번호는 1001번부터 차례대로 증가하며 부여됩니다.
성적이 0~59 C 60~79 B 80~100 A 등급입니다.
학생이 hello() 인사를 하면, 이름과 성적, 등급을 화면에 출력합니다.
학생이 test() 시험을 보면, 성적이 현재성적점수 +10점이 됩니다.
[코드-실습]
package class06;
import java.util.Random;
//실습문제1
class Student1{
//필드
String name;
int score;
//생성자
Student1(String name) {
super();
Random rd = new Random();
this.name = name;
this.score = rd.nextInt(100)+1;
}
//인사
void hello() {
System.out.println("이름 : "+this.name);
System.out.println("성적 : "+this.score +"점");
}
}
//실습문제2
class Student2{
//필드
String name;
int score;
char grade;
//생성자
Student2(String name) {
super();
Random rd = new Random();
this.name = name;
this.score = rd.nextInt(101); //0~100
this.grade = grade();
}
//등급구하기
char grade() {
if(!(0<this.score && this.score<100)) { //0~100
System.out.println("올바르지 않은 점수");
return '?';
}
return this.score<60? 'C': this.score<80? 'B' : 'A';
}
//인사
void hello() {
System.out.println("이름 : "+this.name);
System.out.println("성적 : "+this.score +"점");
System.out.println("등급 : "+this.grade);
}
//시험
void test() {
this.score += 10;
if(this.score > 100) {
this.score = 100;
}
this.grade = grade();
System.out.println("시험을 쳐서 성적이 올랐습니다.");
System.out.println("현재 성적 : "+this.score);
System.out.println("현재 등급 : "+this.grade);
}
}
//실습문제 3
class Student3{
//필드
long num;
String name;
int score;
char grade;
//생성자
Student3(String name, long num) {
super();
Random rd = new Random();
this.name = name;
this.score = rd.nextInt(101); //0~100
this.grade = grade();
this.num = num;
}
//등급구하기
char grade() {
if(!(0<this.score && this.score<100)) { //0~100
System.out.println("올바르지 않은 점수");
return '?';
}
return this.score<60? 'C': this.score<80? 'B' : 'A';
}
//인사
void hello() {
System.out.println("이름 : "+this.name);
System.out.println("성적 : "+this.score +"점");
System.out.println("등급 : "+this.grade);
}
//시험
void test() {
this.score += 10;
if(this.score > 100) {
this.score = 100;
}
this.grade = grade();
System.out.println("시험을 쳐서 성적이 올랐습니다.");
System.out.println("현재 성적 : "+this.score);
System.out.println("현재 등급 : "+this.grade);
}
}
public class Test02 {
public static void main(String[] args) {
//문제1
Student1 st1 = new Student1("학생1");
st1.hello();
System.out.println("-----------------------------");
//문제2
Student2 st2 = new Student2("학생2");
st2.hello();
st2.test();
st2.test();
System.out.println("-----------------------------");
//문제3
long countNum = 1001;
Student3 st3 = new Student3("학생3", countNum++);
st3.hello();
st3.test();
System.out.println(st3.num);
Student3 st4 = new Student3("학생4", countNum++);
System.out.println(st4.num);
}
}
[풀이]
package class07;
import java.util.Random;
class Student{
String name;
int score;
Student(String name){
this.name=name;
Random rand = new Random();
this.score= rand.nextInt(101);
}
void hello() {
System.out.println("이름 : "+this.name);
System.out.println("성적 : "+this.score +"점");
}
}
///////////////////////////////////////////////////////
class Student02{
String name;
int score;
char grade;
Student02(String name){
this.name=name;
this.score= new Random().nextInt(101);
//코드 재사용 == 함수화
// if(this.score>=80) {
// this.grade = 'A';
// }
// else if(this.score>=60) {
// this.grade = 'B';
// }
// else {
// this.grade = 'C';
// }
setGrade();
}
void hello() {
System.out.println("이름 : "+this.name);
System.out.println("성적 : "+this.score +"점");
System.out.println("등급 : "+this.grade);
}
void test() {
this.score += 10;
if(this.score > 100) {
this.score = 100;
}
setGrade();
}
void setGrade() {
if(this.score>=80) {
this.grade = 'A';
}
else if(this.score>=60) {
this.grade = 'B';
}
else {
this.grade = 'C';
}
}
}
///////////////////////////////////////////////////////
class Student03{
int num; // PK : 시스템이 값을 부여해야한다
String name;
int score;
char grade;
Student03(int num, String name){
this.num=num;//pk라서 외부(시스템)에서 값을 부여받아야한다.
this.name=name;
this.score= new Random().nextInt(101);
setGrade();
}
void hello() {
System.out.println("이름 : "+this.name);
System.out.println("성적 : "+this.score +"점");
System.out.println("등급 : "+this.grade);
System.out.println("학번 : "+this.num);
}
void test() {
this.score += 10;
if(this.score > 100) {
this.score = 100;
}
setGrade();
}
void setGrade() {
if(this.score>=80) {
this.grade = 'A';
}
else if(this.score>=60) {
this.grade = 'B';
}
else {
this.grade = 'C';
}
}
}
///////////////////////////////////////////////////////
public class Test01 {
public static void main(String[] args) {
//1번문제
Student stu = new Student("홍길동");
stu.hello();
//2번문제
Student02 stu2 = new Student02("홍길동");
stu2.hello();
stu2.test();
//3번문제
int NUM = 1001; //full대문자는 키워드로 함부로 변경하지 말 것을 의미
Student03 stu01 = new Student03(NUM++, "홍길동");
stu01.hello();
Student03 stu02 = new Student03(NUM++, "모르가나");
stu02.hello();
Student03 stu03 = new Student03(NUM++, "럭스");
stu03.hello();
}
}
[보완]
이번에는 실습과 풀이가 크게 다른 점없이 풀었다!
별다른 말이 없어도 생성자에서 값 초기화 해주는 부분 잊지말기!!
'problem solving > 과제&실습 코딩' 카테고리의 다른 글
[과제/JAVA] 학생부 프로그램에 객체 더하기 (+풀이 0703) (1) | 2024.07.02 |
---|---|
[실습/JAVA] Car class로 오버로딩 연습 (+풀이 0702) (0) | 2024.07.02 |
[과제/JAVA] 학생부 프로그램 함수화 (+풀이 0701) (1) | 2024.06.30 |
[과제/코드업/JAVA] 1362 : 숫자 피라미드 3 (0) | 2024.06.29 |
[과제/코드업/JAVA] 1360 : 숫자 피라미드 2 (0) | 2024.06.28 |