[명품자바]2장 예제

sum·2022년 5월 23일
0

명품자바

목록 보기
4/17

예제 2-1 | 자바 프로그램의 기본 구조

다음 코드를 보면서 자바 프로그램의 기본 구조를 알아보자.

코드

public class Hello {

    public static int sum(int n, int m){
        return n+m;
    }

    public static void main(String[] args){
        int i=20;
        int s;
        char a;

        s=sum(i,10);
        a='?';
        System.out.println(a);
        System.out.println("Hello");
        System.out.println(s);
    }
}

출력

?
Hello
30

예제 2-2 | 변수, 리터럴, 상수 활용

상수 PI를 선언하고 원의 면적을 구하는 프로그램을 작성하라.

코드

public class CircleArea {
    public static void main(String[] args){
        final double  PI = 3.14;

        double radius = 10.0;
        double circleArea = radius*radius*PI;

        System.out.println("원의 면적 = "+circleArea);
    }
}

출력

원의 면적 = 314.0

예제 2-3 | 타입 변환

자동 타입 반환과 강제 타입 반환이 들어 있는 코드이다. 실행 결과는 무엇인가?

코드

public class TypeConversion {
    public static void main(String[] args){
        byte b = 127;
        int i = 100;

        System.out.println(b+i);
        System.out.println(10/4);
        System.out.println(10.0/4);
        System.out.println((char)0X12340041);
        System.out.println((byte)(b+i));
        System.out.println((int)2.9+1.8);
        System.out.println((int)(2.9+1.8));
        System.out.println((int)2.9+(int)1.8);
    }
}

출력

227
2
2.5
A
-29
3.8
4
3

예제 2-4 | Scanner를 이용한 키 입력 연습

Scanner 클래스로 이름, 도시, 나이, 체중, 독신 여부를 입력받고 다시 출력하는 프로그램을 작성하라.

코드

import java.util.Scanner;

public class ScannerEx {
    public static void main(String[] args){
        System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.");
        Scanner sc = new Scanner(System.in);
        
        String name = sc.next(); // 문자열 읽기
        System.out.print("이름은 "+name+", ");
        
        String city = sc.next();
        System.out.print("도시는 "+city+", ");
        
        int age = sc.nextInt(); // 정수 읽기
        System.out.print("나이는 "+age+"살, ");
        
        double weight = sc.nextDouble(); // 상수 읽기
        System.out.print("체중은 "+weight+"kg, ");
        
        boolean isSingle = sc.nextBoolean(); // 논리값 읽기
        System.out.println("독신 여부는 "+isSingle+"입니다.");
        
        sc.close();
    }
}

출력

이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.
kim seoul 20 65.1 true
이름은 kim, 도시는 seoul, 나이는 20살, 체중은 65.1kg, 독신 여부는 true입니다.

예제 2-5 | /와 % 산술 연산

초단위의 정수를 입력받고, 몇 시간, 몇 분, 몇 초인지 출력하는 프로그램을 작성하라.

코드

import java.util.Scanner;

public class ArithmeticOperator {
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        
        System.out.print("정수를 입력하세요: ");
        int time = sc.nextInt();
        int second = time%60; //60으로 나눈 나머지는 초
        int minute = (time/60)%60; //60으로 나눈 몫을 다시 60으로 나눈 나머지는 분
        int hour = (time/60)/60; //60으로 나눈 몫을 다시 60으로 나눈 몫은 시간
        
        System.out.print(time+"초는 ");
        System.out.print(hour+"시간, ");
        System.out.print(minute+"분, ");
        System.out.print(second+"초입니다.");
        
        sc.close();
    }
}

출력

정수를 입력하세요: 3900
3900초는 1시간, 5분, 0초입니다.

예제 2-6 | 대입 연산자와 증감 연산자 사용

다음은 대입 연산자와 증감 연산자를 활용하는 사례이다. 실행 결과는 무엇인가?

코드

public class AssignmentIncDecOperator {
    public static void main(String[] args){
        int a=3, b=3, c=3;
        a+=3;
        b*=3;
        c%=2;
        System.out.println("a="+a+", b="+b+", c="+c);

        int d=3;
        a=d++;
        System.out.println("a="+a+", d="+d);
        a=++d;
        System.out.println("a="+a+", d="+d);
        a=d--;
        System.out.println("a="+a+", d="+d);
        a=--d;
        System.out.println("a="+a+", d="+d);
    }
}

출력

a=6, b=9, c=1
a=3, d=4
a=5, d=5
a=5, d=4
a=3, d=3

예제 2-7 | 비교 연산과 논리 연산

다음은 비교 연산자와 논리 연산자의 사례이다. 실행 결과는 무엇인가?

코드

public class LogicalOperator {
    public static void main(String[] args){
        System.out.println('a'>'b');
        System.out.println(3>=2);
        System.out.println(-1<0);
        System.out.println(3.45<=2);
        System.out.println(3==2);
        System.out.println(3!=2);
        System.out.println(!(3!=2));

        System.out.println((3>2)&&(3>4));
        System.out.println((3!=2)||(-1>0));
        System.out.println((3!=2)^(-1>0));
    }
}

출력

false
true
true
false
false
true
false
false
true
true

예제 2-8 | 조건 연산

다음은 조건 연산자의 사례이다. 실행 결과는 무엇인가?

코드

public class TernartyOperator {
    public static void main(String[] args){
        int a=3, b=5;
        System.out.println("두 수의 차는 "+((a>b)?(a-b):(b-a)));
    }
}

출력

두 수의 차는 2

예제 2-9 | 비트 논리 연산과 비트 시프트 연산

다음 코드의 실행 결과는 무엇인가?

코드

public class BitOperator {
    public static void main(String[] args){
        short a = (short)0x55ff;
        short b = (short)0x00ff;

        System.out.println("[비트 연산 결과]");
        System.out.printf("%04x\n",(short)(a&b));
        System.out.printf("%04x\n",(short)(a|b));
        System.out.printf("%04x\n",(short)(a^b));
        System.out.printf("%04x\n",(short)(~a));

        byte c=20;
        byte d=-8;

        System.out.println("[시프트 연산 결과]");
        System.out.println("c<<2");
        System.out.println("c>>2");
        System.out.println("d>>2");
        System.out.printf("%x\n", (d>>>2));
    }
}

출력

[비트 연산 결과]
00ff
55ff
5500
aa00
[시프트 연산 결과]
c<<2
c>>2
d>>2
3ffffffe

예제 2-10 | if문 활용

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

코드

import java.util.Scanner;

public class SuccessOrFail {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        System.out.print("점수를 입력하시오: ");
        int score = sc.nextInt();
        if(score>=80){
            System.out.println("축하합니다! 합격입니다.");
        }
        sc.close();
    }
}

출력

점수를 입력하시오:85
축하합니다! 합격입니다.

예제 2-11 | if-else 활용

입력된 수가 3의 배수인지 판별하는 프로그램을 작성하라.

코드

import java.util.Scanner;

public class MultipleOfThree {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        System.out.print("수를 입력하시오: ");
        int num = sc.nextInt();
        if(num%3==0){ //3으로 나눈 나머지가 0인지 검사
            System.out.println("3의 배수입니다.");
        } else {
            System.out.println("3의 배수가 아닙니다.");
        }
        
        sc.close();
    }
}

출력

수를 입력하시오: 318
3의 배수입니다.

예제 2-12 | 다중 if-else로 학점 매기기

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

코드

import java.util.Scanner;

public class Grading {
    public static void main(String[] args){
        char grade;
        Scanner sc = new Scanner(System.in);
        
        System.out.println("점수를 입력하세요(0~100): ");
        int score = sc.nextInt();
        if(score>=90){
            grade = 'A';
        } else if(score>=80){
            grade='B';
        } else if(score>=70){
            grade='C';
        } else if(score>=60){
            grade='D';
        } else{
            grade='F';
        }
        System.out.println("학점은 "+grade+"입니다.");
        
        sc.close();
    }
}

출력

점수를 입력하세요(0~100): 
87
학점은 B입니다.

예제 2-13 | 중첩 if-else문 사례

점수와 학년을 입력받아 60점 이상이면 합격, 미만이면 불합격을 출력한다. 4학년의 경우 70점 이상이어야 합격이다.

코드

import java.util.Scanner;

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

        System.out.println("점수를 입력하시오(0~100): ");
        int score = sc.nextInt();
        System.out.println("학년을 입력하시오(1~4): ");
        int year = sc.nextInt();
        
        if(score>=60){//60점 이상이면
            if(year != 4){ //4학년이 아닌 경우
                System.out.println("합격!");
            } else if(score>=70){ //4학년이 70점 이상이면
                System.out.println("합격!");
            } else{ //4학년이 70점 미만이면
                System.out.println("불합격!");
            }
        } else{ //60점 미만이면
            System.out.println("불합격!");
        }
        sc.close();
    }
}

출력

점수를 입력하시오(0~100): 
67
학년을 입력하시오(1~4): 
4
불합격!

예제 2-14 | switch문으로 학점 매기기

예제 2-12의 학점 매기는 코드를 switch문으로 다시 작성하라.

코드

import java.util.Scanner;

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

        System.out.println("점수를 입력하세요(0~100): ");
        int score = sc.nextInt();

        switch(score/10){//60점 이상이면
            case 10:
            case 9:
                grade='A';
                break;
            case 8:
                grade='B';
                break;
            case 7:
                grade='C';
                break;
            case 6:
                grade='D';
                break;
            default:
                grade='F';
        }

        System.out.println("학점은 "+grade+"입니다.");
        sc.close();
    }
}

출력

점수를 입력하세요(0~100): 
78
학점은 C입니다.

예제 2-15 | switch문 활용

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

코드

import java.util.Scanner;

public class CoffeePrice {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        System.out.println("무슨 커피 드릴까요?");
        String order = sc.next();
        int price=0;
        switch (order){
            case "에스프레소":
            case "카푸치노":
            case "카페라떼":
                price=3500;
                break;
            case "아메리카노":
                price=2000;
                break;
            default:
                System.out.println("메뉴에 없는 상품입니다.");
        }
        if(price!=0){
            System.out.println(order+"는 "+price+"원입니다.");
        }
        
        sc.close();
    }
}

출력

무슨 커피 드릴까요?
아메리카노
아메리카노는 2000원입니다.

0개의 댓글