본문 바로가기
Language/JAVA

[JAVA] 쉽게 배우는 자바 프로그래밍_02장 기초 문법

by 전전긍긍 2022. 4. 24.

본 포스팅은 쉽게 배우는 자바 프로그래밍 교재를 바탕으로 작성되었습니다.

 


Chapter 02. 자바 프로그램 구조와 기초 문법

📍도전 과제

01. 직사각형의 가로와 세로를 키보드로 입력받아 넓이를 구하는 프로그램을 작성해 보자.

public class Do01 {
    public static void main(String[] args) {
        double w, h, area; //직사각형 가로, 세로, 넓이
        Scanner in = new Scanner(System.in);

        System.out.print("직사각형의 가로 길이를 입력하세요 : ");
        w = in.nextDouble();

        System.out.print("직사각형의 세로 길이를 입력하세요 : ");
        h = in.nextDouble();

        System.out.printf("직사각형의 넓이는 %.1f입니다.", w * h);

    }
}

 

02. 입력된 정수가 홀수인지 짝수인지를 출력하는 프로그램을 조건 연산자를 사용해서 작성해 보자.

import java.util.Scanner;

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

        System.out.print("정수를 입력하세요 : ");
        int x = in.nextInt();

        x = (x % 2 == 0) ? 1 : 0;
        if (x == 1)
            System.out.println("짝수");
        else
            System.out.println("홀수");
        
    }
}


📍프로그래밍 문제

01번. println() 메서드를 이용해 다음 형태의 피라미드를 출력하는 프로그램을 작성하라.

public class Pro01 {
    public static void main(String[] args) {
        System.out.println("     *     ");
        System.out.println("    ***    ");
        System.out.println("   *****   ");
        System.out.println("  *******  ");
        System.out.println(" ********* ");
        System.out.println("***********");
    }
}

02. 키보드로 입력받은 정수의 제곱 값을 출력하는 프로그램을 작성하라.

public class Pro01 {
    public static void main(String[] args) {
        System.out.print("정수를 입력하세요 : ");
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();

        System.out.printf("%d의 제곱은 %d", x, x * x);
    }
}

03. 원기둥의 부피를 구하는 프로그램을 작성하라.

import java.util.Scanner;

public class Pro01 {
    public static void main(String[] args) {
        double r, h;
        final double PI = 3.14;

        Scanner in = new Scanner(System.in);

        System.out.print("원기둥의 밑면 반지름은? ");
        r = in.nextDouble();

        System.out.print("원기둥의 높이는? ");
        h = in.nextDouble();

        System.out.printf("원기둥의 부피는 %.1f", r * r * h * PI);
    }
}

04. 초를 입력하면 시간, 분, 초로 환상해 출력하는 프로그램을 작성하라.

import java.util.Scanner;

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

        System.out.print("초 단위 정수를 입력하세요 : ");
        int x = in.nextInt();

        System.out.printf("%d시간 %d분 %d초", (x / 60)/60, x / 60, x % 60);
    }
}

05. 임의의 소문자로 초기화된 char 타입 변수 c를 대문자로 변환해 출력하는 프로그램을 작성하라.

public class Pro01 {
    public static void main(String[] args) {
        char x = 'h';

        System.out.printf("%c", (int)x - 32);
    }
}

06. 키보드로 화씨온도(°F)를 입력받아 섭씨온도(°C)로 환산해 출력하는 프로그램을 작성하라.

double c 입력할 때, 숫자를 소수점까지 써주어야 한다. 

double c = (5 / 9) * (f - 32);

위 코드와 같이 썼는데 5/9는 0이 되므로 정확한 결과를 얻을 수 없음 (정수 타입을 사용하면 제대로 X)

잘못됨

import java.util.Scanner;

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

        Scanner in = new Scanner(System.in);

        System.out.print("화씨온도를 입력해주세요 : ");
        double f;
        f = in.nextDouble();

        double c = (5.0 / 9.0) * (f - 32.0);
        System.out.println("화씨온도 " + f + "는 섭씨온도로 " + c + "입니다.");


    }
}

07. 키보드로 정수를 입력받아 ① 4와 5로 나누어지는지, ② 4 또는 5로 나누어지는지, ③ 4나 5 중 하나로 나누어지지만 두 수 모두로는 나누어지지 않는지를 true/false로 출력하는 프로그램을 작성하라. 

③번은 4나 5 중 하나로 나누어지지만 4와 5 둘 다로 나누어지지 않는 경우를 true로 하였다.

import java.util.Scanner;

public class Pro07 {
    public static void main(String[] args) {
        int x;
        Scanner in = new Scanner(System.in);
        x = in.nextInt();

        //1. 4와 5로 나누어지는가
        if ((x % 4 == 0) && (x % 5 == 0)) {
            System.out.println(true);
        }
        else
            System.out.println(false);

        //2. 4 또는 5로 나누어지는가
        if ((x % 4 == 0) || (x % 5 == 0)) {
            System.out.println(true);
        }
        else
            System.out.println(false);

        //3. 4와 5 중 하나로 나누어지지만 두 수 모두로는 나누어지지 않는지
        if ((x % 4 == 0) || (x % 5 == 0)) {
            if(!(x % 4 == 0) && (x % 5 == 0))
                System.out.println(true);
            else
                System.out.println(false);
        }
        else
            System.out.println(false);
    }
}

08. 키보드로 0부터 999 사이의 정수를 입력받아 각 자릿수를 더한 결과를 출력하는 프로그램을 작성하라.

세 자리 수를 고려하여 x1이란 변수를 만들었다. x1변수는 입력받은 x값의 몫이다. 

그리고 sum이라는 각 자릿수의 합을 저장하는 변수를 만들었다. sum은 x값의 나머지, x1값의 몫, 나머지가 더해져서 각 자릿수의 합이 만들어진다.

import java.util.Scanner;

public class Pro08 {
    public static void main(String[] args) {
        int x;
        Scanner in = new Scanner(System.in);

        System.out.print("0~999 사이의 숫자를 입력하세요 : ");
        x = in.nextInt();

        int x1 = 0;
        int sum = 0;
        x1 = x / 10;
        sum = (x % 10) + (x1 / 10) + (x1 % 10);
        System.out.println("각 자릿수의 합  = " + sum);
    }
}

09. 대학을 졸업하려면 최소 140학점을 이수해야 한다고 하자. 이수한 학점 중 전공은 70학점 이상이어야 하며, 교양과 일반은 각각 30학점 이상이거나 두 영역이 80학점 이상이어야 한다. 이수한 세 개의 학점을 각각 키보드로 입력받아 졸업 여부를 출력하는 프로그램을 작성하라.

public class Pro09 {
    public static void main(String[] args) {
        //순서대로 전공, 교양, 일반
        int x, y, z;
        Scanner in = new Scanner(System.in);

        System.out.print("전공 이수 학점 : ");
        x = in.nextInt();

        System.out.print("교양 이수 학점 : ");
        y = in.nextInt();

        System.out.print("일반 이수 학점 : ");
        z = in.nextInt();

        if (x + y + z >= 140) {
            if ( x >= 70 && ((y >= 30)&&(z >= 30)) || (y + z >= 80)) {
                System.out.println("졸업 가능");
            }
            else
                System.out.println("졸업 불가능");
        }
        else
            System.out.println("졸업 불가능");
    }
}