- if-else if-else문 및 활용
// 점수를 입력 후 점수값에 따라 등급을 나눠 다르게 출력
// 2자리 이상 또는 1자리의 문자열이 들어갈 시,
// 올바른 값을 입력하라고 출력
import java.util.Scanner;
public class IfElseIfElseExample2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char tmp;
boolean output = true;
System.out.print("점수를 입력하세요>");
String input = sc.nextLine();
int cnt = 0;
int cntNum = 0;
// while에 비해 for문이 목적을 분명히 알려주므로 더 좋음
for (int i = 0; i < input.length(); i++) {
tmp = input.charAt(i);
// * 방법 1 설명 (break 없이도 print 한 번만 할 수 있는 방법?)
// for문에서 정수가 아니면 output = false로 저장 후,
// 아래의 if문으로 돌린다.
// 아래에선 output가 true가 아니면 else문으로 바로 가므로
// 올바른 점수 입력 출력하고 끝남.
// but. break;로 끝내는 것보다 명확하진 않으므로 비추.
// */
// 방법 1
if (!(tmp >= '0' && tmp <= '9')) {
output = false;
cnt++;
} else {
cntNum++;
}
}
if (output == true) {
int score = Integer.parseInt(input);
//
if (score >= 90) {
System.out.println("점수가 90~100입니다.");
System.out.println("등급은 A 입니다.");
} else if (score >= 80) {
System.out.println("점수가 80~89입니다.");
System.out.println("등급은 B 입니다.");
} else if (score >= 70) {
System.out.println("점수가 70~79입니다.");
System.out.println("등급은 C 입니다.");
} else {
System.out.println("점수가 70 미만입니다.");
System.out.println("등급은 D 입니다.");
}
}
else {
System.out.println("올바른 점수를 입력하세요.");
// 문자열이 몇 개 들어갔는지 출력하는 것은? but 문자 개수만 알고 싶어!
// 숫자 개수도 따로 알고 싶어!
// 야매. input.length()- cnt
System.out.println("입력한 것 중 숫자가 아닌 문자는 "
+ cnt + "개입니다.");
System.out.println("숫자는 " + cntNum + "개입니다.");
}
}
}
break;를 이용한 더 깔끔한 방법
// 점수를 입력 후 점수값에 따라 등급을 나눠 다르게 출력
// 2자리 이상 또는 1자리의 문자열이 들어갈 시,
// 올바른 값을 입력하라고 출력
import java.util.Scanner;
public class IfElseIfElseExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char tmp;
boolean output = true;
System.out.print("점수를 입력하세요>");
String input = sc.nextLine();
// while에 비해 for문이 목적을 분명히 알려주므로 더 좋음
for (int i = 0; i < input.length(); i++) {
tmp = input.charAt(i);
if (!(tmp >='0' && tmp <= '9')) {
output = false;
System.out.println("올바른 점수를 입력하세요.");
break;
// ddd등 많은 문자열을 입력 시 break에서 미리 멈춰 쓸데없는 동작을 차단함.
}
// 이걸 넣으면 오류.
// else {
// output = true;
// }
// 오류 설명
// else를 넣을 경우 만약 "d9"이란 값을 입력했으며,
// if문에 break;가 없다고 가정해보자.
// 그럼 for문에서 input.length();=2만큼 2번(컴퓨터는 0, 1번) 실행될 것이고
// 0번째 실행 시 output 값이 false가 되며 다시 9에 대한 if문을 실행해 true값을 저장해
// parseInt method를 돌려 d9을 score에 저장한다.
// 근데 d9은 integer 타입이 아니므로 error.
//
if (output == true) {
int score = Integer.parseInt(input);
if (score >= 90) {
System.out.println("점수가 90~100입니다.");
System.out.println("등급은 A 입니다.");
} else if (score >= 80) {
System.out.println("점수가 80~89입니다.");
System.out.println("등급은 B 입니다.");
} else if (score >= 70) {
System.out.println("점수가 70~79입니다.");
System.out.println("등급은 C 입니다.");
} else {
System.out.println("점수가 70 미만입니다.");
System.out.println("등급은 D 입니다.");
}
}
}
}
}
'Java > Learn_Java' 카테고리의 다른 글
5. 참조 타입_연습문제 (0) | 2020.04.05 |
---|---|
5. 참조 타입 (0) | 2020.03.29 |
3. 연산자_연습문제 (0) | 2020.03.29 |
3. 연산자 (0) | 2020.03.28 |
2. 변수와 타입_3. 타입 변환 (0) | 2020.03.28 |