if 문


if(조건식){
    실행문장
    }

  • 조건식이 참이면, 문장을 실행한다.

예시


시험점수가 80점 이상이라면 합격 판별을 하는 프로그램

import java.util.Scanner;

public class SuccessOrFail {
    public static void main (String[] args) {
        Scanner scanner = new Scanner(System.in);


        System.out.print("정수를 입력하시오:");
        int score = scanner.nextInt();
        if (score >= 80)
            System.out.println("축하합니다.! 합격입니다.");

        scanner.close();
    }
}

실행결과
정수를 입력하시오:90
축하합니다.! 합격입니다.

시험점수를 입력받기위해서 Scanner 클래스를 import한다. 이를 이용하여서 사용자로부터 값을 입력받고, 입력받은 값을 nextInt()메소드를 이용해서 score변수에 대입한다. if문 조건식score가 80보다 크거나 같으면 아래의 문장을 실행한다. 마지막으로 프로그램을 종료하기 전에 clsoe()메소드로 scanner를 종료한다.


if문에서는 문제를 해결하기 위한 알맞은 조건을 조건식으로 설정하는 것이 가장 중요햐다.


if-else 문


  • 실행문장이 하나일 경우에는 중괄호 생략이 가능하다.
  • if문 조건식이 참이라면 아래문장을 실행하고, 거짓이라면, else문을 실행한다.

if(조건식){
    실행문장
    }
else {
    실행문장
}

예시


입력된 수가 3의 배수인지 판별하는 프로그램

import java.util.Scanner;

public class MultipleOfThree {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("수를 입력하시오: ");

        int num = scanner.nextInt();
        if(num%3 ==0) {
            System.out.println("3의 배수입니다.");

        }
        else {
            System.out.println("3의 배수가 아닙니다.");
        }
    }
}

실행결과
수를 입력하시오: 267
3의 배수입니다.

수를 입력받기 위해서 Scanner클래스를 사용한다. 정수형 변수 num을 선언하면서 nextInt()메소드를 대입한다. num이 3으로 나누었을 때, 나머지가 0이면 아래의 문장을 실행한다. 나머지가 0이라는 말은 곧, "3의 배수이면"과 같다. 조건식이 거짓이면, "3의 배수가 아님을 출력한다.".


다중 if-else 문


  • if-else문에 else if문이 추가된 형태이다.

예시


다중 if-else 문을 이용하여 입력받은 성적에 대해 학점을 부여하는 프로그램


import java.util.Scanner;

public class Grading {
    public static void main(String[] args) {
        char grade;
        Scanner scanner = new Scanner(System.in);

        System.out.print("점수를 입력하시오(0-100): ");
        int num = scanner.nextInt();

        if(num >= 90)
            grade = 'A';
        else if(num >= 80)
            grade = 'B';
        else if(num >= 70)
            grade = 'C';
        else if(num >= 60)
            grade = 'D';
        else
            grade = 'F';
        System.out.print("학점은 "+ grade + "입니다.");

        scanner.close();
    }
}

실행결과
점수를 입력하시오(0-100):79
학점은 C입니다.

if문 조건식이 거짓이면, else if문의 조건식을 검사한다. 조건식이 참이면, 문장을 실행하고 아니면 아래의 else if문의 조건식을 검사한다.


if-else문을 조건연산자 '?' ':'으로 변경할 수 있다.

switch 문

switch (식){
    case1:
    break;
     case2:
    break;
...
case 값n:
    case 값n;
    break;
default:
    실해문장 m;

  • 특정한 값에 따라 여러 방향으로 분기하는 경우, switch문을 사용하면 가독성이 높은 코드를 작성할 수 있다.
  • switch문 식을 case문의 값과 비교한다. 이때, case문의 값은 정수 리터럴, 문자 리터럴, 문자열 리터럴 만 허용한다.
  • case문의 값 중에서 변수나 식은 사용할 수 없다.

예시


switch문을 이용하여 커피 메뉴의 가격을 알려주는 프로그램을 작성하라. 에스프레소, 카푸치노, 카페라떼는 3500원이고, 아메리카노는 2000원이다.


import java.util.Scanner;
public class CoffeePrice {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int price = 0;

        System.out.print("무슨 커피를 드릴까요?");
        String order = scanner.next();

        switch(order) {
        case "에스프레소":
        case "카푸치노":
        case "카페라떼":
            price = 3500;
            break;
        case "아메리카노":
            price = 2000;
            break;
        default:
                System.out.println("메뉴없음");

        }
        if(price!= 0) System.out.print(order + "는 " + price + "원입니다.");
        scanner.close();

    }
}

실행결과
무슨 커피를 드릴까요?카푸치노
카푸치노는 3500원입니다.

Scanner클래스로 입력받은 값을 String클래스 order에 대입한다. switch문 식을 order로 하여서 이를 case문의 값과 비교하도록 하고 이를 만족하면, 설정해놓은 price값을 대입한다. 이때, 해당하는 조건이 없을 경우에는 "메뉴없음"을 출력하도록 한다.
price값이 '0'이 아니라면, 커피 메뉴의 가격을 출력하도록 한다.


default문은 생략가능하다. break;를 만나면, switch문을 벗어난다.

Scanner scanner = new Scanner(System.in);


  • System.in은 표준 입력 스트림 객체이다.
  • import문이 필요하다. (import java.util.Scanner;)
  • System.in은 단순히 키 입력을 바이트 형태로 입력 받기에 이를 사용자가 원하는 타입으로 바꾸는 Scanner 클래스가 필요하다.
  • 일반적으로 Scanner 클래스는 키 값을 토큰 단위로 읽는다.(토큰은 공백 문자를 기준으로 분리한 단위를 말한다.)

예시

import java.util.Scanner;

public class ScannerEx {
    public static void main(String[] args) {
        System.out.println("이름, 도시, 나이,체중, 독신 여부를 빈칸으로 분리하여 입력:");
        Scanner scanner = new Scanner(System.in);

        String name = scanner.next();
        System.out.print("이름은 "+name+", ");

        String city = scanner.next();
        System.out.print("도시는 "+city+" ");

        int age = scanner.nextInt();
        System.out.print("나이는 "+age+" ");

        double weight = scanner.nextDouble();
        System.out.print("체중은 "+weight+" ");

        boolean isSingle = scanner.nextBoolean();
        System.out.print("독신 여부는 "+isSingle+" ");
        scanner.close();
    }
}

실행결과
이름, 도시, 나이,체중, 독신 여부를 빈칸으로 분리하여 입력:
Kim Seoul 20 65.1 true
이름은 Kim, 도시는 Seoul 나이는 20 체중은 65.1 독신 여부는 true 

사용자로부터 값을 입력 받기 위해서 Scanner클래스를 import한다. 클래스 내에서 Scanner 객체를 생성하여 사용자로부터 값을 입력받는다. 문자열 형태로 입력 받기 위해서 next()메소드를 사용한다. 나이를 입력 받기 위해서 nextInt()매소드를 사용한다. 체중 값을 입력 받기 위해서 nextDouble()메소드를 사용한다. 독신여부를 나타내기 위해서 nextBoolean()메소드를 사용한다. 다 사용하였으므로 scanner 객체의 사용을 종료하기 위해서 close()메소드를 사용하였다.


클래스 내에서 함수를 사용하였기에 '메소드'라 부른다. System.in을 통해 받은 데이터를 사용자가 원하는 타입으로 바꾸기 위해서 Scanner 클래스를 사용한다. scanner.close()가 없어도 프로그램이 종료되면 자동으로 닫힌다.

System.out.print(), System.out.println()


  • 정수, 문자, 문자열 등 데이터를 화면 출력하기 위해 사용한다.
  • import 필요없다.

예시

public class ConsolePrint1 {
    public static void main(String[] args) {

        System.out.print("Hello");
        System.out.println(" World");
        System.out.println(3);
        System.out.println(2*5);


    }
}

실행결과
Hello World
3
10

System.out.println()의 경우 화면에 출력하고 다음 줄로 이동하지만, System.out.print()은 다음 줄로 이동하지 않는다.
System.out.println()대신에 이스케이프 시퀀스 '\n'를 사용할 수 있다.


그냥 위와 같다고 배웠지, 어떠한 원리로 인하여 위와 같은지 정확하게 모른다. 추가 보충이 필요한 부분이다.


String에 대한 간단한 이해


  • String은 JAVA에서 기본 타입에 속하지 않는다. 자바 라이브러리에서 제공하는 클래스이다.
  • 문자열을 사용해야 할 때, String 클래스를 이용한다.

예시


public class UnderstandString {
    public static void main(String[] args) {

        String toolName = "JDK";
        toolName = toolName + 1.8;
        System.out.println("("+3+","+"5"+")");
        System.out.println(toolName + "이 출시됨");
    }
}

실행결과
(3,5)
JDK1.8이 출시됨

toolName이라는 String클래스를 선언하고 "JDK"로 초기화한다. toolName에 1.8를 더해서 다시 대입한다. 이를 화면에 출력하여 어떠한 값이 나오는지 확인한다.


String클래스와 기본 타입의 +연산은 기본 타입의 값이 문자열로 바뀐다. 두 문자열이 연결되어 새로운 문자열이 생성된다.

+ Recent posts