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("정답입니다!!");
}

만약 입력받은 값이 더 크지도, 작지도 않다면 "정답입니다!!"를 출력

  • 결과

좋은 웹페이지 즐겨찾기