제 2장 자바 기본 프로그래밍

eunchae-04·2024년 9월 22일

명품 JAVA Programming

목록 보기
3/5

2.1 자바 프로그램의 구조

예제 2-1 자바 프로그래밍의 기본 구조

package p58_Hello;

public class p58_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);
	}
}


2.3 자바의 데이터 타입

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

package p72_CircleArea;

public class p72_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);
	}
}

예제 2-3 타입 변환 키

package p74_TypeConversion;

public class p74_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);
	}
}


2.4 자바에서 키 입력

  • Scanner를 이용한 키 입력

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

package p79_ScannerEx;
import java.util.Scanner;

public class p79_ScannerEx {
	public static void main(String[] args) {
		System.out.println("이름, 도시, 나이, 체중, 독신 여부를 빈칸으로 분리하여 입력하세요.");
		Scanner scanner = new Scanner(System.in);
		
		String name = scanner.next();
		System.out.println("이름은 "+name+", ");
		
		String city = scanner.next();
		System.out.println("도시는 "+city+", ");
		
		int age = scanner.nextInt();
		System.out.println("나이는 "+age+", ");
		
		double weight = scanner.nextDouble();
		System.out.println("체중은 "+weight+", ");
		
		boolean isSingle = scanner.nextBoolean();
		System.out.println("독신 여부는 "+isSingle+"입니다.");
		
		scanner.close();
		
	}
}


2.5 연산

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

package p82_ArithmeticOperator;
import java.util.Scanner;

public class p82_ArithmeticOperator {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("정수를 입력사헤요: ");
		int time = scanner.nextInt();
		int second = time % 60;
		int minute = (time / 60) % 60;
		int hour = (time / 60) / 60;
		
		System.out.print(time + "초는 ");
		System.out.print(hour + "시간, ");
		System.out.print(minute + "분, ");
		System.out.print(second + "초입니다.");
		scanner.close();
	}
}

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

package p84_AssignmentIncDecOperator;

public class p84_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++;	//a=3, d=4
		System.out.println("a = " + a + ", d = " + d);
	
		a = ++d;	//d=5, a=5
		System.out.println("a = " + a + ", d = " + d);
	
		a = d--;	//a=5, d=4
		System.out.println("a = " + a + ", d = " + d);

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

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

package p86_LogicalOperator;

public class p86_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));
	}
}

예제 2-8 조건 연산자

package p87_TernaryOperator;

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


  • 비트 연산

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

package p92_BitOperator;

public class p92_BitOperator {
	public static void main(String[] args) {
		short a = (short)0x55ff;
		short b = (short)0x00ff;
		
		System.out.println("[비트 연산 결과]");
		System.out.printf("%03x\n", (short)(a&b));	//비트 AND
		System.out.printf("%03x\n", (short)(a|b));	//비트 OR
		System.out.printf("%03x\n", (short)(a^b));	//비트 XOR
		System.out.printf("%03x\n", (short)(~a));	//비트 NOT
		
		byte c = 20;	//0x14
		byte d = -8;	//0xf8
		
		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));

	}
}


2.6 조건문

  • 단순 if문

예제 2-10 if문 활용

package p95_SuccessOrFail;

import java.util.Scanner;

public class p95_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();
	}
}

  • if~else문

예제 2-11 if~else 활용

package p96_MultipleOfThree;

import java.util.Scanner;

public class p96_MultipleOfThree {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("수를 입력하시오: ");
		int number = scanner.nextInt();
		if(number % 3 == 0) {
			System.out.println("3의 배수입니다.");
		}
		else {
			System.out.println("3의 배수가 아닙니다.");
		}
		
		scanner.close();
	}
}

  • 다중 if~else문

예제 2-11 다중 if~else로 학점 매기기

package p98_Grading;

import java.util.Scanner;

public class p98_Grading {
	public static void main(String[] args) {
		char grade;
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("점수를 입력하세요(0~100): ");
		int score = scanner.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 +"입니다");
		
		scanner.close();
	}
}

  • 중첩 if~else문

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

package p99_NestedIf;

import java.util.Scanner;

public class p99_NestedIf {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("점수를 입력하세요(0~100): ");
		int score = scanner.nextInt();
		System.out.print("학년을 입력하세요(1~4): ");
		int year = scanner.nextInt();
		
		if(score >= 60) {
			if(year != 4) System.out.println("합격!");
			else if(score >= 70) System.out.println("합격!");
			else System.out.println("불합격!");
		}
		else System.out.println("불합격!");
		
		scanner.close();
	}
}

  • switch문

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

package p101_GradingSwitch;

import java.util.Scanner;

public class p101_GradingSwitch {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		char grade;
		System.out.print("점수를 입력하세요(0~100): ");
		int score = scanner.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+"입니다.");
		
		scanner.close();
	}
}

예제 2-15 swith문 활용

package p103_CoffeePrice;

import java.util.Scanner;

public class p103_CoffeePrice {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("무슨 커피 드릴까요? ");
		String order = scanner.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 + "원입니다.");
		scanner.close();
	}
}


Open Challenge - 가위바위보 게임

package p105_OpenChallenge;

import java.util.Scanner;

public class p105_OpenChallenge {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("가위바이보 게임입니다. 가위, 바위, 보 중에서 입력하세요. ");
		System.out.print("철수 >> ");
		String Cheolsoo = scanner.next();
		System.out.print("영희 >> ");
		String Younghee = scanner.next();
		
		if(Cheolsoo.equals("가위")) {
			if(Younghee.equals("보")) System.out.println("철수가 이겼습니다.");
			else if(Younghee.equals("바위")) System.out.println("영희가 이겼습니다.");
			else if(Younghee.equals("가위")) System.out.println("비겼습니다.");
		}
		else if(Cheolsoo.equals("바위")) {
			if(Younghee.equals("가위")) System.out.println("철수가 이겼습니다.");
			else if(Younghee.equals("보")) System.out.println("영희가 이겼습니다.");
			else if(Younghee.equals("바위")) System.out.println("비겼습니다.");
		}
		else if(Cheolsoo.equals("보")) {
			if(Younghee.equals("바위")) System.out.println("철수가 이겼습니다.");
			else if(Younghee.equals("가위")) System.out.println("영희가 이겼습니다.");
			else if(Younghee.equals("보")) System.out.println("비겼습니다.");
		}
		
		scanner.close();
	}
}
package p105_OpenChallenge;

import java.util.Scanner;

public class p105_OpenChallenge {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("가위바위보 게임입니다. 가위, 바위, 보 중에서 입력하세요.");
        System.out.print("철수 >> ");
        String Cheolsoo = scanner.next();
        System.out.print("영희 >> ");
        String Younghee = scanner.next();
        
        if (Cheolsoo.equals(Younghee)) {
            System.out.println("비겼습니다.");
        } else if (Cheolsoo.equals("가위") && Younghee.equals("보") ||
                   Cheolsoo.equals("바위") && Younghee.equals("가위") ||
                   Cheolsoo.equals("보") && Younghee.equals("바위")) {
            System.out.println("철수가 이겼습니다.");
        } else {
            System.out.println("영희가 이겼습니다.");
        }
        
        scanner.close();
    }
}



연습 문제 - 실습 문제

#1

package Quiz1;

import java.util.Scanner;

public class Quiz1 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("1$는 1200원 입니다. 달러를 입력하세요 >> ");
		int money = scanner.nextInt();
		System.out.println("$"+money+"는 "+ money*1200 + "원 입니다. ");
		scanner.close();
	}
}


#2

package Quiz2;

import java.util.Scanner;

public class Quiz2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("생일을 입력 하세요 >> ");
		int birthday = scanner.nextInt();
		
		System.out.println(birthday/10000 + "년 " + (birthday%10000)/100 +"월 " + birthday%100 + "일");
		
		scanner.close();
	}

}


#3

package Quiz3;

import java.util.Scanner;

public class Quiz3 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("*** 자바 분식입니다. 주문하면 금액을 알려드립니다. ****");
		
		System.out.print("떡복이 몇 인분? >> ");
		int menu1 = scanner.nextInt();
		System.out.print("김말이 몇 인분? >> ");
		int menu2 = scanner.nextInt();
		System.out.print("쫄면 몇 인분? >> ");
		int menu3 = scanner.nextInt();
		
		int sum = 2000*menu1 + 1000*menu2 + 3000*menu3;
		
		System.out.println("전체 금액은 "+sum + "원 입니다.");
	}
}


#4

package Quiz4;

import java.util.Scanner;

public class Quiz4 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("여행지 >> ");
		String palce = scanner.nextLine();
		
		System.out.print("인원수 >> ");;
		int people = scanner.nextInt();
		
		System.out.print("숙박일 >> ");
		int day = scanner.nextInt();
		
		System.out.print("1인당 항공료 >> ");
		int airport = scanner.nextInt();
		
		System.out.print("1방 숙박비 >> ");
		int room = scanner.nextInt();
		
		System.out.println(people + "명의 "+ palce + " " +day + "박 " + (day+1) + "일 여헹에는 방이 " + (people/2+people%2) + "개 필요하며 경비는 " + (airport*people + room*(people/2+people%2)*day) + "원 입니다.");
		
		scanner.close();
		
	}
}


#5

package Quiz5;

import java.util.Scanner;

public class Quiz5 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("학생1 >> ");
		String name1 = scanner.next();
		int late1 = scanner.nextInt();
		int absent1 = scanner.nextInt();
		
		System.out.print("학생2 >> ");
		String name2 = scanner.next();
		int late2 = scanner.nextInt();
		int absent2 = scanner.nextInt();
		
		System.out.println(name1 + "의 감점은 "+(late1*3+absent1*8) +", "+name2+"의 감점은 "+(late2*3+absent2*8));
		
		if((late1*3+absent1*6)<(late2*3+absent2*8)) System.out.println(name1 + "의 출석 점수가  높음. "+name1+" 출석 점수는 "+(100-late1*3-absent1*8));
		else if((late1*3+absent1*6)>(late2*3+absent2*8)) System.out.println(name2 + "의 출석 점수가 더 높음. "+name2+" 출석 점수는 "+(100-late2*3-absent2*8));
		else System.out.println("점수 동일");
	}
}


#6

package Quiz6;

import java.util.Scanner;

public class Quiz6 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("나이를 입력하세요 >> ");
		int age = scanner.nextInt();
		
		int red, blue, yellow, sum;
		red = age / 10;
		blue = (age%10)/5;
		yellow = (age%5);
		sum = red+blue+yellow;
		
		System.out.println("빨간 초는 "+red+"개, 파란 초는 "+blue+"개, 노란 초는 "+yellow+"개 총 "+sum+"개가 필요합니다.");
		
		scanner.close();
		
		
	}	
}


#7

package Quiz7;

import java.util.Scanner;

public class Quiz7 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("월을 입력하세요(1~12) >> ");
		int month = scanner.nextInt();
		
		switch(month) {
		case 3: case 4: case 5:
			System.out.println("따뜻한 봄");
			break;
		case 6: case 7: case 8:
			System.out.println("바다가 즐거운 여름");
			break;
		case 9: case 10: case 11:
			System.out.println("낙엽이 지는 아름다운 가을");
			break;
		case 12: case 0: case 1:
			System.out.println("눈 내리는 하얀 겨울");
			break;	
		}
		scanner.close();
	}

}


#8

package Quiz8;

import java.util.Scanner;

public class Quiz8 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("연산 입력 >> ");
		double number1 = scanner.nextDouble();
		String op = scanner.next();
		double number2 = scanner.nextDouble();
		double result = 0;
		
		if(op.equals("곱하기")) {
			result = number1 * number2;
		}
		else if(op.equals("더하기")) {
			result = number1+number2;
		}
		else if(op.equals("빼기")) {
			result = number1-number2;
		}
		else if(op.equals("나누기")) {
			result = number1/number2;
		}
		System.out.println(number1 +" "+ op +" " + number2 + "의 계산 결과는 "+ result);
		
		scanner.close();
	}
}


#9

package Quiz9;

import java.util.Scanner;

public class Quiz9 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("점 (x,y)의 좌표 입력 >> ");
		int x = scanner.nextInt();
		int y = scanner.nextInt();
		
		if(x<10 || x>200 || y<10 || y>300) {
			System.out.println("(" + x + ", " + y + ")는 사각형 밖에 있습니다.");
		}
		else if(x == 10 || y == 10 || x == 200 || y == 300) {
			System.out.println("(" + x + ", " + y + ")는 사각형 선 상에 있습니다.");
		}
		else System.out.println("(" + x + ", " + y + ")는 사각형 안에 있습니다.");
		
		scanner.close();
	}
}


#10


package Quiz10;

import java.util.Scanner;

public class Quiz10 {
	public static void main(String[] args) {
		Scanner scanner  = new Scanner(System.in);
		
		System.out.print("(x1, y1), (x2, y2)의 좌표 입력 >> ");
		int x1 = scanner.nextInt();
		int y1 = scanner.nextInt();
		int x2 = scanner.nextInt();
		int y2 = scanner.nextInt();
		
		if(10<x1 && x1<200 && x2>10 && x2<200 && y1>10 && y1<300 && y2>10 && y2<300) {
			System.out.println("(" + x1 + ", "+ y1 + "), (" + x2 + ", " + y2 + ") 사각형은 (10, 10) (200,300) 사각형에 포함된다.");
		}
		else {
			System.out.println("(" + x1 + ", "+ y1 + "), (" + x2 + ", " + y2 + ") 사각형은 (10, 10) (200,300) 사각형에 포함되지 않는다.");
		}
		scanner.close();
	}
}


#11

package Quiz11;

import java.util.Scanner;

public class Quiz11 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("냉장고 상태 입력 >> ");
		String str = scanner.next();
		byte status = Byte.parseByte(str, 2);
		
		if((status & 0b00000001) != 0) System.out.print("전원 켜져 있음. ");
		else System.out.print("전원 꺼져 있음. ");
		
		if((status & 0b00000010) != 0) System.out.print("문 열려 있음. ");
		else System.out.print("뭄 닫혀 있음. ");
		
		if((status & 0b00000100) != 0) System.out.print("전구 정상 작동. ");
		else System.out.print("전구 손상됨. ");
		
		if((status & 0b00001000) != 0) System.out.print("냉장고 온도 3도 마먼. ");
		else System.out.print("냉장고 온도 3도 이상. ");
		
		scanner.close();
	}
}


#12

package Quiz12;

import java.util.Scanner;

public class Quiz12 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("자동차 상태 입력 >> ");
		int status = scanner.nextInt();
		
		if((status & 0b10000000) != 0) System.out.print("자동차는 달리는 상태이고 ");
		else System.out.print("자동차는 정지 상태이고 ");
		
		if((status & 0b01000000)!= 0) System.out.print("에어컨이 켜진 상태이고 ");
		else System.out.print("에어컨이 꺼진 상태이고 ");
		
		int temp = 0;
		if((status & 0b00000001)!=0) temp += 1;
		if((status & 0b00000010)!=0) temp += 2;
		if((status & 0b00000100)!=0) temp += 4;
		if((status & 0b00001000)!=0) temp += 8;
		if((status & 0b00010000)!=0) temp += 16;
		if((status & 0b00100000)!=0) temp += 32;

		System.out.print("온도는 " + temp+ "도이다.");
	}
}

0개의 댓글