JAVA(조건문, 반복문 cf. try/catch, ASCII-Code, 난수)
요약
- 조건문(if, switch/case)
- 반복문(for, while, do/while)
조건문(if, switch/case)
if 문
if(조건식) {
수행문1;
} else if(조건식) {
수행문2;
} else {
수행문3;
}
- 예제
userID가 1이면 관리자 2이면 판매자 3이면 구매자이다. userID를 확인하여 누가 로그인했는지 출력하고 관리자의 경우 password 가 1234와 일치하면 "관리자로 로그인 하였습니다."를 출력하시오.
System.out.print("UID : ");
String userID = scan.nextLine();
String password = "1234";
if (userID.equals("1")) {
System.out.println(userID + ":관리자");
System.out.print("패스워드 : ");
String pw = scan.nextLine();
if (pw.equals(password)) {
System.out.println("관리자로 로그인 하였습니다.");
} else {
System.out.println("로그인 실패");
}
} else if (userID.equals("2")) {
System.out.println(userID + ":판매자");
} else if (userID.equals("3")) {
System.out.println(userID + ":구매자");
} else {
System.out.println("올바른 값 입력하세요.");
}
scan.close();
※ String자료형이 같은지, 아닌지 비교하기 위해선 equals()함수를 써야한다.
if (userID.equals("1")) { System.out.println(userID + ":관리자"); System.out.print("패스워드 : "); String pw = scan.nextLine(); if (pw.equals(password)) { System.out.println("관리자로 로그인 하였습니다."); } else { System.out.println("로그인 실패"); }
UID를 1번을 입력하면 관리자로 로그인 하게 되고, 패스워드를 입력 받는다.
패스워드가 틀릴 시 로그인에 실패하게 된다.
else if (userID.equals("2")) { System.out.println(userID + ":판매자"); } else if (userID.equals("3")) { System.out.println(userID + ":구매자"); }
UID가 2번 일경우 판매자, 3번 일경우 구매자에 로그인 하게 된다.
else { System.out.println("올바른 값 입력하세요."); }
위의 번호가 아닐경우 올바른 값을 입력하라는 문구가 나온다.
- 결과
switch / case 문
switch(key) {
case value :
수행문1;
break;
default:
수행
break;
}
- 예제
Switch / case문을 사용하여 사용자로부터 점수를 입력받아 점수가 90이상이면 'A', 90미만 80이상이면 'B', 80미만 70이상이면 'C', 70미만 60이상이면 'D', 그 미만이면 'F'를 출력하시오.
Scanner sc = new Scanner(System.in);
System.out.print("점수 입력 : ");
try {
int grade = sc.nextInt();
if (grade <= 100 && grade>=0) {
switch (grade / 10) {
case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
case 6:
System.out.println("D");
break;
default:
System.out.println("F");
break;
}
} else {
System.out.println("0 ~ 100 사이 값 입력");
}
} catch (Exception e) {
System.out.println("숫자를 입력해 주세요.");
}
sc.close();
※ try / catch
예외처리, try안에 있는 문구를 수행 후 오류가 나면 catch안의 내용을 실행 함.
사용자가 혹시라도 문자를 입력할 경우를 대비해 사용하였다.
if (grade <= 100 && grade>=0)
입력 값이 0~100 사이일 경우만 진입
switch (grade / 10) { case 9: System.out.println("A"); break; case 8: System.out.println("B"); break; case 7: System.out.println("C"); break; case 6: System.out.println("D"); break; default: System.out.println("F"); break; }
입력한 수를 10으로 나누어주면 int형의 특성으로 10의 자리만 추출 하여 등급 측정 가능
- 결과
반복문(for, while, do/while)
for 문
for(초기값; 조건식; 증감식){
수행문;
code...;
}
- 예제
별찍기 : 마름모
final int STAR = 5;
for (int i = 1; i <= STAR; i++) {
for (int j = 0; j < STAR - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i * 2 - 1; k++) {
System.out.print("*");
}
System.out.println();
}
for (int i = STAR - 1; i >= 1; i--) {
for (int j = 0; j < STAR - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i * 2 - 1; k++) {
System.out.print("*");
}
System.out.println();
}
final int STAR = 5;
해당 상수의 크기만큼 반복문의 반복횟수가 많아지면서 마름모의 크기도 커진다.
for (int i = 1; i <= STAR; i++) { for (int j = 0; j < STAR - i; j++) { System.out.print(" "); } for (int k = 0; k < i * 2 - 1; k++) { System.out.print("*"); } System.out.println(); }
(k < i * 2 - 1)
↑내가 작성한 코드는 바로위의 조건식이 마름모 별찍기의 핵심이라고 생각한다.↑
설명은 생략한다.ㅋ (절대 귀찮아서가 아니다!!)
혹시라도 이 글을 다시보는 미래의 나 혹은 별찍기 찍기연습를 하고있는 사람이라면 이 부분을 이해하도록 해보자!
- 결과
while 문
// 조건식이 true일경우 반복, false일경우 빠져나옴
while(조건식){
수행문;
code...;
}
- 예제
while문을 이용하여 문자 'A'~'Z'까지 출력
int num = 65;
while (num < 91) {
System.out.print((char) num);
num++;
}
※ 해당 문제를 풀기위해서는 ASCII코드 표를 알아야 한다
해당 표를 보면 10진수 65번부터 90번까지가 A~Z인 것을 알 수 있다.
int num = 65; while (num < 91) { System.out.print((char) num); num++; }
변수에 숫자를 집어넣고 char형으로 캐스팅시키면 ASCII코드번호에 해당하는 문자가 출력된다.
- 결과
do / while 문
do{
수행문;
code...;
} while(조건식)
// do/while문은 do에 있는 code를 무조건 1번은 수행하고 반복한다.
// 조건식은 while과 동일하다.
- 예제
랜덤하게 0~100까지 입력을 받아서 정답을 맞추는 프로그램 작성.
정답보다 크면 "더 작은수로 다시 시도해보세요."를 출력,
정답보다 작으면 "더 큰수로 다시 시도해보세요."를 출력
Scanner sc = new Scanner(System.in);
final int com = (int) (Math.random() * 100) + 1;
int user = 0;
do {
System.out.print("값 입력 : ");
try {
user = sc.nextInt();
if (com > user) {
System.out.println("더 큰수로 다시 시도해보세요.");
} else if (com < user) {
System.out.println("더 작은수로 다시 시도해보세요.");
} else {
System.out.println("정답입니다!!");
}
} catch (Exception e) {
System.out.println("올바른 값을 입력 해 주세요.");
}
sc.nextLine();
System.out.println();
} while (com != user);
sc.close();
final int com = (int) (Math.random() * 100) + 1;
※ Math.random() 함수는 0.0~1의 랜덤한 값을 double자료형으로 가져오는 함수 이다.
현재 나의 코드는 1~100까지 랜덤한 값을 가져온다.
user = sc.nextInt(); if (com > user) { System.out.println("더 큰수로 다시 시도해보세요."); } else if (com < user) { System.out.println("더 작은수로 다시 시도해보세요."); }
우선 유저에게 값을 입력받아 입력받은 값이 더 큰지 작은지 비교한다.
else { System.out.println("정답입니다!!"); }
만약 입력받은 값이 더 크지도, 작지도 않다면 "정답입니다!!"를 출력
- 결과
Author And Source
이 문제에 관하여(JAVA(조건문, 반복문 cf. try/catch, ASCII-Code, 난수)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hyeon330/멀캠-풀스택-2일차조건문-반복문-cf.-난수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)