728x90
728x90

 

본 글은 명품자바프로그래밍 2장 연습문제, 예제의 문제와 풀이이며 실습문제는 여기로 이동해주세요.

 


 

01. 명품자바기본프로그래밍 2장 요약

 

자바 프로그램은 여러 개의 클래스로 이루어지며 class로 선언한다. 클래스 내에는 메소드(멤버함수), 필드(멤버변수), 상수(final필드)를 포함하며 반드시 클래스 내에 캡슐화되어야 한다.

식별자 : 클래스, 변수, 상수, 메소드에 붙이는 이름으로 규칙에 맡게 붙인다.

변수 : 프로그램에서 데이터를 저장하는 공간. 실행에 따라 값이 변한다.

상수 : 프로그램 실행에도 값이 일정

데이터형

기본형데이터타입 8가지 : boolean, char, byte, short, int, long, float, double

참조형데이터타입(레퍼런스형) : 클래스(문자열 String도 포함), 인터페이스, 배열

- C의 포인트처럼 객체를 가리키지만 실제 메모리 주소를 가지지 않는다.

데이터형변환

- 작은 데이터타입 -> 큰 데이터타입 : 문제없음

- 큰 데이터타입 -> 작은 데이터타입 : 데이터손실이 발생할 수 있으며 타입을 직접 지정해줘야 한다.

자바의 입출력

출력문 : System.out.print( )

입력문 : System.in ------ 키보드로 직접 입력받는 표준입력스트림 객체. 입력된 키에 해당하는 바이트 정보를 리턴한다.

Scanner 클래스의 객체 사용은 아래와 같으며 입력된 키를 숫자, 문자, 문자열 등 원하는 타입으로 변환하여 제공한다.

이 클래스를 사용하려면 import.java.util.Scanner; 문과 함께 사용되어야 한다.

 

Scanner s=new Scanner(System.in);

 

\n : 줄바꿈기능

printf 는 출력 서식도 추가할 수 있음.

 

 

연산자 : 산술, 증감, 비교, 시프트, 논리, 조건, 대입

 

조건문 : 참, 거짓에 따라 작업을 수행한다.

1) if

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

- 조건식은 비교연산이나 논리연산이 혼합된 식으로 구성되며 조건식의 결과는 boolean 값이다.

- true면 실행문장이 실행되며 false이면 if문을 벗어난다.

2) if-else

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

- true면 실행문장1이 실행되며 false이면 실행문장2 실행 후 if문을 벗어난다.

- 실행문장이 1줄이면 중괄호 생략 가능하나 처음에는 헷갈리니 붙이는 습관을 가지자.

* 다중, 중첩 if-else 문도 있다.

* 삼항연산자 : if-else 문을 한 줄로 표현하기

 

i=a>b?a-b:b-a;    //a>b가 true면 a-b, false면 b-a

 

3) switch

switch (조건식) { case 값1: 실행문장1; break; case 값2: 실행문장2; break; ( ... ) default : 실행문장 n; }

- case 문은 리터럴(정수, 문자, 문자열)만 가능하며 변수나 식은 사용할 수 없다.

- 어떤 case문에도 값이 일치하지 않으면 default문으로 이동하여 실행문장n을 실행한다. default문은 생략 가능하다.

- case 에 break; 문이 생략되면 다음 break문을 만날때까지 계속 실행된다.

 



02. 명품자바기본프로그래밍 2장 예제

 

예제 2-1. 자바프로그램의 기본 구조를 살펴보자. #명품자바프로그래밍2장예제1번

 

package Luxuryjava;

public class P0201 {     //클래스
    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);   // 정수값 30 출력
    }
}

 

 

 

예제 2-2. 변수, 리터럴, 상수 활용 #명품자바프로그래밍2장예제2번

반지름이 10.0인 원의 면적을 구하시오. 원의 넓이 구하는 공식은 반지름*반지름*파이로 계산

 

package Luxuryjava;
public class P0202 {
    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. 타입 변환 #명품자바프로그래밍2장예제3번

다음 소스의 실행 결과는 무엇인가요?

(문자의 유니코드를 알고 싶으면 char형 변수를 int로 변환하면 된다. 바이트 단위로 표현하면 a는 97, A는 65부터 시작한다.)

package Luxuryjava;
    // 타입변환 예제 
public class P0203 {
    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);  // char로 변환, 0x0041. 정수는 65
        System.out.println((byte)(b + i));    // 227의 16진수 0xE3*
        System.out.println((int)2.9 + 1.8);   // 2 + 1.8
        System.out.println((int)(2.9 + 1.8));   // 4.7의 정수
        System.out.println((int)2.9 + (int)1.8);  
    }
        // 결과값 227, 2, 2.5, A, -29, 3.8, 4, 3 
}

 

 

 

예제 2-4. Scanner을 이용한 키 입력 연습 #명품자바프로그래밍2장예제4번

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

 

package Luxuryjava;
import java.util.Scanner;
public class P0204 {
    // Scanner 키연습
    public static void main(String[] args) {
        System.out.println("이름,도시,나이,체중,독신 여부를 입력");
        Scanner s = new Scanner(System.in);
        String name = s.next();     // 문자열 읽기 
        System.out.print("이름은 "+name+",");       
        String city = s.next();
        System.out.print("도시 "+city+",");                   
        int age = s.nextInt();   // 정수 읽기 
        System.out.print("나이 "+age+"살,");        
        double weight = s.nextDouble();   // 실수 읽기 
        System.out.print("체중은 "+weight+"kg,");       
        boolean single = s.nextBoolean();    // 논리값 읽기 
        System.out.println("독신여부는 "+single+"입니다.");
        s.close();
    }
}

 

 

 

예제 2-5. /와 % 산술 연산 문제 #명품자바프로그래밍2장예제5번

초 단위의 정수를 입력받고 시간, 분, 초로 나누어 출력하는 프로그램을 맹그시오.

잘 만들었다면 5000으로 테스트 시 1시간 23분 20초가 나옵니다.

 

package Luxuryjava;
import java.util.Scanner;
public class P0205 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.print("초 단위의 정수를 입력하세요: ");
        int time = s.nextInt();       
        int second = time%60;               // 60으로 나눈 나머지는 초
        int minute = (time/60)%60;      // 60으로 나눈 몫(초)을 60으로 나눈 나머지
        int hour = (time/60)/60;          // time/3600
        System.out.print(time +"초는 ");
        System.out.print(hour +"시간 ");
        System.out.print(minute +"분 ");
        System.out.print(second +"초입니다. ");    
        s.close();
   }
}

 

 

 

예제 2-6 대입연산자와 증감 연산자 #명품자바프로그래밍2장예제6번

다음 코드의 실행 결과는?  (답 : a=6, b=9, c=1 / a=3, d=4 / a=5, d=5 / a=5, d=4 / a=3, d=3)

 

package Luxuryjava;
public class P0206 {
    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);
    }
}

 

 

 

예제 2-7 비교연산자와 논리연산자 #명품자바프로그래밍2장예제7번

다음 코드의 실행 결과는?

 

package Luxuryjava;
public class P0207 {
    public static void main(String[] args) {
        System.out.println('a' > 'b');    //false
        System.out.println(3 >= 2);       //true  
        System.out.println(-1 < 0);       //true
        System.out.println(3.45 <= 2);    //false
        System.out.println(3 == 2);       //false
        System.out.println(3 != 2);       //true
        System.out.println(!(3!=2));    //false
        System.out.println((3>2) && (3>4));    //false
        System.out.println((3!=2) || (-1>0));    //true
        System.out.println((3!=2) ^ (-1>0));    //true
    }
}

 

 

 

예제 2-8 조건연산 #명품자바프로그래밍2장예제8번

다음 코드의 실행 결과는?

 

package Luxuryjava;
public class P0208 {
    public static void main(String[] args) {       
        int a = 3, b = 5;
        System.out.println("두 수의 차는 "+((a>b)?(a-b):(b-a)));
            // a가 b보다 크면 a-b, 작으면 b-a를 하라. 결과 : 2
    }
}

 

 

 

예제 2-9 비트논리연산과 비트시프트연산 #명품자바프로그래밍2장예제9번

다음 코드의 실행 결과는?

 

package Luxuryjava;
public class P0209 {
    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));   // "%04x\n" : 16진수 형식으로 출력 
        System.out.printf("%04x\n", (short)(a|b));   // printf ("출력서식", 출력할 내용);
        System.out.printf("%04x\n", (short)(a^b));   
        System.out.printf("%04x\n", (short)(~a));     
        // And, OR, XOR, NOT.  답은 00ff, 55ff, 5500, aa00      
        byte c= 20;  // 0x14
        byte d= -8;  // 0xf8       
        System.out.println("[시프트연산결과]");
        System.out.println(c << 2);     
        System.out.println(c >> 2);   // 0 삽입 
        System.out.println(d >> 2);   // 1 삽입 
        System.out.printf("%x\n", (d  >>> 2));  // 0 삽입 
    }   //  답은 80, 5, -2, 3ffffffe
}

 

 

 

예제 2-10 if문 #명품자바프로그래밍2장예제10번

시험 점수를 입력받고 점수가 80점 이상이면 합격 판별을 하는 프로그램 작성하기

 

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

 

 

 

예제 2-11 if - else문 #명품자바2장예제11번

스캐너로 정수를 입력받고 3의 배수인지 판별하기

 

package Luxuryjava;
import java.util.Scanner;
public class P0211 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);       
        System.out.print("숫자를 입력하시오: ");
        int num = s.nextInt();        
        if(num % 3 == 0)
            System.out.println("3의 배수입니다. ");
        else
            System.out.println("3의 배수가 아닙니다. ");       
        s.close();
    }
}

 

 

 

예제 2-12 다중if - else 로 학점 매기기 #명품자바프로그래밍2장예제12번

스캐너로 정수값인 성적을 입력받고 학점매기기. 90점까지는 A, 80점까지는 B, ...60점까지는 D, 나머지는 F

 

package Luxuryjava;
import java.util.Scanner;
public class P0212 {
    public static void main(String[] args) {
        //char grade;
        Scanner s = new Scanner(System.in);
        System.out.println("점수를입력하세요: ");
        int score = s.nextInt();
        if(score >= 90)
            System.out.println("A");
        else if(score >=80)
            System.out.println("B");
        else if(score >=70)
            System.out.println("C");
        else if(score >=60)
            System.out.println("D");
        s.close();            
    }
}
package Luxuryjava;
import java.util.Scanner;
public class P0212 {
    public static void main(String[] args) {
        char grade;
        Scanner s = new Scanner(System.in);
        System.out.println("점수를입력하세요: ");
        int score = s.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+" 입니다.");     
        s.close();    
    }
}

 

 

 

예제 2-13 중첩 if - else문 #명품자바프로그래밍2장예제13번

스캐너로 정수값인 성적을 입력받고 60점 이상은 합격, 미만이면 불합격 출력하기. 단, 4학년의 경우 70점 이상이어야 합격.

 

package Luxuryjava;
import java.util.Scanner;
public class P0213 {
    public static void main(String[] args) {
        Scanner s= new Scanner(System.in);
        System.out.print("점수를입력하시오:");
        int score = s.nextInt();
        System.out.print("학년을입력하시오:");
        int year = s.nextInt();
        if (score >=60) {
            if(year!=4)
                System.out.println("합격");
            else if(score >=70)
                System.out.println("합격");  //4학년이 70점 이상
            else
                System.out.println("불합격");  //4학년 70점 미만
        }
        else
            System.out.println("불합격");  //60점 미만
        s.close();
    }
}

 

 

 

예제 2-14 switch으로 학점 매기기 (2-12의 다른 방법) #명품자바2장예제14번

스캐너로 정수값인 성적을 입력받고 90점까지는 A, 80점까지는 B, ...60점까지는 D, 나머지는 F

 

package Luxuryjava;
import java.util.Scanner;
public class P0214 {
    public static void main(String[] args) {       
        Scanner s = new Scanner (System.in);
        char grade;
        System.out.println("점수를 입력하시오 :");
        int score=s.nextInt();       
        switch (score/10) {
        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+"입니다");
        s.close();
    }
}

 

 

 

예제 2-15 switch문 #명품자바프로그래밍2장예제15번

에스프레소, 카푸치노, 카페라떼는 3500원, 아메리카노는 2000원으로 하여 커피 메뉴의 가격을 알려주는 프로그램을 만들기

 

package Luxuryjava;
import java.util.Scanner;
public class P0215 {
    public static void main(String[] args) {
        Scanner s= new Scanner(System.in);     
        System.out.println("커피메뉴를 선택하시오 ");
        String order = s.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.print(order+"는"+price+"원입니다");
    s.close();
    }
}

 

 

 

 

요약과 예제를 본 후 연습문제를 풀어보고 싶으시다면,
자바기본프로그래밍 연습문제는 여기로 이동해주세요.

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v