문제
1. 학생의 점수를 입력받는다
2. 입력받은 점수에 따라서 학점을 부여한다
[학점]
90점 이상일 경우
1) 98점 이상이면 A+
2) 95점 이상이면 A0
3) 90점 이상 95점 미만 A-
80점 이상일 경우
1) 88점 이상이면 B+
2) 85점 이상이면 B0
3) 85점 미만이면 B-
나머지는 C학점
내가 생각한 설계
-if문을 사용하기
1.스캐너 클래스를 생성하여 점수를 입력받기
2.if문을 이용해 점수별로 알맞는 학점 저장
3.점수와 학점 출력
사용할 명령어 이론
1.Scanner
-입력에 관련된 기능을 가진 클래스
-Scanner 타입의 sc변수를 선언하고 Scanner클래스를 복제한 값을 저장했으므로, Sc라는 변수를 통해 Scanner가 가진 기능을 사용할 수 있다
##입력메서드
1.next()
-사용자가 입력한 값을 String 타입으로 가져온다
-입력한 값에 띄어쓰기가 있으면 띄어쓰기 직전까지만 가져온다
2.nextLine()
-사용자가 입력한 값을 String 타입으로 가져온다
-띄어쓰기 상관없이 엔터를 기준으로 가져온다(한 줄을 다 가져옴)
3.nextInt()
-사용자가 입력한 값을 int 타입으로 가져온다
-next()와 동일하게 값에 띄어쓰기가 이쓰면 띄어쓰기 직전까지만 가져온다
2.if문
-if라는 키워드를 사용한다
-조건식이 true인 경우 if문 블록 내의 코드를 실행한다
##if와 함께 사용할 수 있는 문
-else문
-else if문
###else
-if와 함께 사용한다
-위의 조건이 모두 거짓일 때 블록이 실행된다
-마지막에 한번만 사용 가능하다
###else if
-if와 함꼐 사용한다
-위의 조건이 거짓이고 자신의 조건이 참이면 블록이 실행된다
-여러번 사용 가능하다
주의할 점
-코드는 위에서부터 아래로 순차적으로 실행되기 때문에 순서 신경써서 만들기
--높은 점수부터 낮은 점수순으로 코드 짜기
문제 풀이
1.스캐너 클래스를 생성하여 점수를 입력받기
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하시오: ");
int score = sc.nextInt();
-입력창 바로 옆에 입력을 받기위해 출력메소드를 println()이 아닌 print()를 사용했다
-입력받은 점수는 score라는 변수를 생성해 저장해두도록 만들었다
2.if문을 이용해 점수별로 알맞는 학점 저장
3.점수와 학점 출력
[학점]
90점 이상일 경우
1) 98점 이상이면 A+
2) 95점 이상이면 A0
3) 90점 이상 95점 미만 A-
80점 이상일 경우
1) 88점 이상이면 B+
2) 85점 이상이면 B0
3) 85점 미만이면 B-
나머지는 C학점
if(score >= 98) {
System.out.println("점수:"+ score + "학점 A+");
}else if(score>=95) {
System.out.println("점수:"+ score + "학점 A0");
}else if(score<=95&&score>=90) {
System.out.println("점수:"+ score + "학점 A-");
}else if(score>=83) {
System.out.println("점수:"+ score + "학점 B+");
}else if(score>=85) {
System.out.println("점수:"+ score + "학점 B0");
}else if(score<85&&score>=80) {
System.out.println("점수:"+ score + "학점 B-");
}else {
System.out.println("점수:"+score+"학점 C");
}
-높은 점수부터 낮은 점수 순으로 if문을 작성해보았다
-90점 미만으로,80점 미만으로 내려가는 점수 전에는 &&(AND)를 사용하여 점수의 차이를 두었다
실행결과
-문제 없이 실행되었다
선생님의 풀이
Scanner sc = new Scanner(System.in);
// 1) 점수 입력받기
System.out.print("점수 입력 >> ");
int score = sc.nextInt(); // 입력받은 정수 변수에 저장
// 2) 학점을 저장할 변수 초기화
String grade = ""; // 빈 문자열 저장
// 3) 조건문사용 점수에 따라 학점 계산
if (score >= 90) {
grade = "A";
if (score >= 98) {
grade += "+"; // grade = grade("A") + "+", 문자열 연결
} else if (score >= 95) {
grade += "0";
} else { // 점수가 90점 이상이고 95점 미만
grade += "-";
}
} else if (score >= 80) {
grade = "B";
if (score >= 88) {
grade += "+";
} else if (score >= 85) {
grade += "0";
} else {
grade += "-";
}
} else {
grade = "C";
}
// 4) 입력받은 점수와 학점 출력
System.out.println("점수는 " + score + "점, 학점은 " + grade);
}
}
-내가 풀었던 거에서 학점을 저장할 grade 변수 생성, if문 안에 if문을 추가로 사용을 하니 실행결과는 똑같으나 가독성이 더 높아진 걸 느낄 수 있었다
느낀점
-문제를 풀 당시에는 조건식 안에 조건식을 사용할 수 있다는 걸 몰랐어서 선생님의 풀이를 보고 조건식 안에 조건식이 가능하다는 걸 깨닫고 나니 더 다양한 조건식을 만들 수 있을 거 같았다
-나는 점수만 저장했지만 선생님은 학정 또한 저장하기 위해 변수를 만드신 것을 보고 바로 출력할 수 있어도 어떻게 될 지 모르니 필요한 값들은 변수로 저장을 해두는 버릇을 키워야겠다고 생각했다
'연습기록 > JAVA' 카테고리의 다른 글
[JAVA코딩테스트] 홀짝에 따라 다른 값 반환하기 (0) | 2024.11.15 |
---|---|
[JAVA] 리스트 연습-상품 품목 관리 프로그램 만들기 (0) | 2024.11.03 |
[JAVA]캐스팅 연습-도형 넓이 구하는 프로그램 생성 (0) | 2024.10.29 |
[JAVA]클래스 연습-학생의 정보를 저장하는 클래스 생성 (1) | 2024.10.24 |
[JAVA]class연습 - 도서관 책대여/반납 프로그램 만들어보기 (0) | 2024.10.19 |