3일차

|

주요내용 : 한글자입력, ASCII코드, 제어문자, 조건문과 그에 따른 예제, 난수발생클래스, 배수 구하기 

 

import java.io.IOException;
import java.util.Random;
import java.util.Scanner;

public class printfTest {
	
	public static void main(String[] args) throws IOException{

		
		// print vs. println vs. printf
//		print : 출력 후 가만히 있음.
//		println : 출력 후 줄바꿈
//		printf : "형식지정자"에 %와 영문자를 조합해서 다양한 자료타입을 출력.(소수점이하 자리를 정밀하게 쓸수있다.)
//		      : %5d : 5자리(왼쪽) 확보후 출력
//		      : %-5d : 5자리(오른쪽) 확보 후 출력 
//		      : %05d : 왼쪽에 생긴 빈공간을 0으로 채움
		
		int su = 12345;
		System.out.printf("\n %8d\n", su);
		System.out.printf("\n %-8d\n", su);
		System.out.printf("\n %08d\n", su);
		
		// 한글자 입력 연습
//		한글자 입력 - System.in.read(); 를 활용
//		- java.io 패키지의 InputStream 클래스이며, 이 클래스내의 모든것을 사용 가능하며, 아스키코드 값으로 입력을 받는다. 
//		- int a = System.in.read();
//		  System.out.println("입력한 내용은 =“ + a);     A를 입력하면 65가 나오게 된다. 
//		- 만약 입력한 내용 그대로 나오게 하려면
//		   char a = (char)Sytem.in.read(); 이렇게 해줘야 한다. 
//		- 숫자일 경우에는
//		   int a = System.in.read() - 48; 또는
//		   int a = System.in.read() - '0'을 해준다 
//
//		ASCII CODE 암기할것.
//		- 숫자:  0 ~ 9 => 48-57
//		- 대문자: A ~ Z => 65-90
//		- 소문자: a ~ z => 97-122
		
		int ken = 0;
		System.out.print("키보드로부터 문자 입력 요망: ");
		 char art = (char)System.in.read(); // A -> 문자처리
		 System.in.read();
		 System.in.read();
		 System.out.println("입력한 문자 : " + art); // A
		 
		System.out.print("키보드로부터 입력 요망 : ");
		ken = System.in.read(); //A, 예외처리부분, 숫자처리
		System.out.print("입력한 문자의 10진수는: " + ken); // 65
		 
		// 0~9 사이의 숫자 3개를 이용하여 합계를 구하는 프로그램을 작성하세요.
		int x, y, z, sum;
		System.out.println("X의 값을 한자리로 입력해주세요");
		x = System.in.read() - 48;
		System.in.read(); // enter의 기능
		System.in.read();	
		System.out.println("X의 값을 한자리로 입력해주세요");
		y = System.in.read() - '0';
		System.in.read(); // enter의 기능
		System.in.read();
		System.out.println("X의 값을 한자리로 입력해주세요");
		z = System.in.read() - 48;
		System.in.read(); // enter의 기능
		System.in.read();
		sum = x + y + z;
		System.out.println("합계는 = " + sum);
		
		
		//제어문자
		System.out.println("새 줄 (New line)\t\\n\t" + (int) '\n'); // 역슬래쉬 뒤에 출력되는 값은 컴퓨터의 코드값임.
		System.out.println("탭 (Tab)\t\\t\t" + (int) '\t');
		System.out.println("백스페이스 (Backspace)\t\\b\t" + (int) '\b');
		System.out.println("단일 인용부호 (Single Quote)\t\\'\t" + (int) '\'');
		System.out.println("이중 인용부호 (Double Quote)\t\\\"\t" + (int) '\"');
		System.out.println("백슬래시 (Backslash)\t\\\\\t" + (int) '\\');
		System.out.println("널 문자 (null)\t\\0\t" + (int) '\0'); 
		
		//형변환 - 메모리 낭비되는 경우
		float x = 100.678f; //4바이트 메모리
		double y = (double)x; //8바이트 메모리, 메모리 낭비됨.
		
		//변수와 블록의 범위 실습
		{//시작 block D
			int d= 10;
			{//시작 block C
				int c = 20;
				{//시작 blcok B
					int b = 30;
					{//시작 blcok A
						int a = 40;
				//a,b,c,d 모두 사용가능
						a = 200;
						b = 1000;
						c = 2000;
						d = 50;
			System.out.println("1 : " +a+" "+b+" "+c+" "+d);
			//System.out.printf("1 :%d %d %d %d\n",a,b,c,d);
			}// end A
					b = 200;
					c = 300;
					d = 60;
				//b,c,d가 살수 있다.
				System.out.println("2 : "+b+" "+c+" "+d);
			//System.out.printf("2 : %d %d %d\n",b,c,d);
			}// end B
					c = 300;
					d = 70;
					//c,d가 살 수 있다.
			System.out.println("3 : "+c+" "+d);
			//System.out.printf("3 : %d %d\n",c,d);
		}// end C
		d=80; //d만 살수있다.
		System.out.println("4 : " +d);
		//System.out.printf("4 : %d\n",d);				
		}
		
		
		//3장. 연산자
//		int x = 300;
//		int y = 500;
//		int sum = x + y;
		/* int : 정수형 데이터
		 * sum =    x           +          y;
		 *       operand    operator    operand
		 *      (연산의 대상)   (연산자)   (연산의 대상)
		 *  
		 */
		
		// + : 덧셈, 연결연산자("nn" + "입니다.");
		// - : 뺄셈, 부호변환(-- : +, ...)
		// 지수승 : System.out.println("y^3 =" + (y*y*y)); // y의3승표현
		
		// 산술연산자와 ASCII 코드
		char c1 = 'A' + 1; // 65 + 1 = 66(B)
		char c2 = 'A';
		int c3 = c2 + 1; // char : -128 ~ 127
		// char c3 = c2 + 1; // Error
		System.out.println("c1: " + c1);
		System.out.println("c2: " + c2);
		System.out.println("c3: " + c3); // 66 
		
		// InputDataCheckNaNExample1
		String userInput = "12345";
		double val = Double.valueOf(userInput);
		double currentBalance = 10000.0;
		currentBalance += val;
		System.out.println(currentBalance); //22345.0
		
		// InputDataCheckNaNExample2
		String userInput = "NaN";
		double val = Double.valueOf(userInput);
		double currentBalance = 10000.0;
		if(Double.isNaN(val)) {
			System.out.println("Nan이 입력되어 처리할 수 없음");
			val = 10.0;
		}
		currentBalance += val;
		System.out.println(currentBalance);
		
		//               20,       -20                        =       0
		//부호화절대값 : 00010100   00010100                          00010100 
		//1의 보수 :               11101011                          11101100   
		//2의 보수 :                     +1                         ----------  
		//                       --------        1(carry는 버립니다.) 00000000 = 0 
		//                       11101100 (-20)
		
		
		//조건문(Conditioner Statement)
		int score = 93;
		
		if(score>=90) {
				System.out.println("점수가 90보다 큽니다.");
				System.out.println("등급은 A 입니다.");
		}
		if(score< 90) {
				System.out.println("점수가 90보다 작습니다.");
				System.out.println("등급은 B 입니다.");				
		}
		
		//문제] 영어점수를 입력하여 학점을 부여하는 프로그램을 작성하세요. - 단순IF문
		Scanner sc = new Scanner(System.in);
		System.out.println("영어점수를 입력하세요");
		int eng = sc.nextInt();
		if(eng<= 100 && eng >=90) {System.out.println("A학점입니다.");
		}
		if(eng<=89 && eng >=80) {System.out.println("B학점입니다.");
		}
		if(eng<=79 && eng >=70) {System.out.println("C학점입니다.");
		}
		if(eng<=69 && eng >=60) {System.out.println("D학점입니다.");
		}
		if(eng<=59 && eng >=0) {System.out.println("F학점입니다.");
		}
		
		//조건연산자 : (조건식) > ? 참 : 거짓;
		Scanner sc = new Scanner(System.in);
		System.out.println("영어점수를 입력하세요");
		int eng = sc.nextInt();
		char grade = (eng>=90) ? 'A' : (eng>=80) ? 'B' : (eng >=70) ? 'C' : (eng >=60) ? 'D' : 'F';
		System.out.println(grade);
		
//		
		//문제] 올해년도를 입력하여 짝수해인지, 홀수해인지 판별하여 출력하세요. - {}괄호 안쓰고도 가능.
		Scanner sc = new Scanner(System.in);
		System.out.println("올해 년도를 입력하세요");
		int year = sc.nextInt();
		if(year % 2 == 0)
			System.out.println(year + "년은 짝수해입니다.");
		else
			System.out.println(year + "년은 홀수해입니다.");		
		
		//문제] 홍길동의 수학 성적이 85점 입니다.
		// 70점 이상이면 합격으로 하고, 아니면 불합격 으로 처리하는 프로그램을 작성하세요.
		String name = "홍길동";
		int math = 85;
		//조건식 : 수학점수가 70점보다 크거나 같으면 
		if(math >= 70)
			System.out.println(name +"님은 " +math + "점으로 합격입니다.");
		else // 아니면
			System.out.println(name +"님은 " +math + "점으로 불합격입니다.");
		
		//조건연산자 : (조건식) > ? 참 : 거짓; //if문의 간소화
		int math = 85;
		String pass = (math >= 70) ? "합격" : "불합격";
		System.out.println(pass);
		
		
		//문제] 어떤 숫자를 입력받아서, 음수인지, 양수인지, 0인지를 판별하여 출력하세요.
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int nu = sc.nextInt();
		if(nu < 0)
			System.out.println(nu + "값은 음수입니다.");
		else if(nu > 0)
			System.out.println(nu + "값은 양수입니다.");
		else
			System.out.println(nu + "값은 0입니다.");
		
		//조건연산자 : (조건식) > ? 참 : 거짓;
		String x = (su > 0) ? "양수":(su<0) ? "음수" : "0";
		System.out.println(x);
		
		//난수 발생 클래스 : Random(), Math()
		//1~6사이의 난수를 발생하여 출력해 보세요. : 로또, 복권, 게임, 
//		int num = (int)(Math.random()*6 + 1); // 0을 제거하고 1~6사이 난수발생
		int num = (int)(Math.random()*6); // 0~5사이 난수발생
		
		Random rand = new Random(); //Random 클래스 이용해서 객체 생성
		int su = rand.nextInt(6) + 1;
		System.out.println(su);
		
		if(num == 1)
			System.out.println("아이에게 장난감을 사줍니다.");
		if(num == 2)
			System.out.println("저축을 합니다.");
		if(num == 3)
			System.out.println("놀이동산에 놀러 갑니다.");
		if(num == 4)
			System.out.println("용돈으로 5000원을 줍니다.");
		if(num == 5)
			System.out.println("자전거를 삽니다.");
		if(num == 6)
			System.out.println("운동화를 삽니다.");
		
		//문제] 은행에 저축을 합니다. 금액은 입력에 따릅니다.
		//저축액이 100만원     이면, 하이마트에 가서 노트북을 삽니다.
		//저축액이 80만원 이상이면, 멋진 양복을 삽니다.
		//저축액이 60만원 이상이면, 아이스크림을 삽니다.
		//저축액이 40만원 이상이면, 영화관람을 합니다.
		//저축액이 20만원 이상이면, 한턱 쏩니다.
		//저축액이 10만원 이상이면, 게임기를 삽니다.
		//저축액이 5만원 이상이면, 라면한박스를 삽니다.
		//저축액이 3만원 이상이면, 뷔페를 가서 저녁을 먹습니다.
		//저축액이 2만원 이하이면, 집에서 열공을 합니다.
		//그리고, STOP을 입력하면 프로그램이 중지합니다.
		
		//    누적금액                                        매번저축금액
		int sbanking = 0, banking = 0, money2 = 0;
		String stop = " "; // 중지변수
		String money = " "; // 입력금액 문자 문자데이터
		
		Scanner sc = new Scanner(System.in);
		while(true) {
			while(true) {
				System.out.println("저축할 금액를 입력하세요");
				money = sc.next();		
				
				if(money.equals("STOP")) {
					System.exit(0);
				}
				money2 = Integer.parseInt(money);
				
			if(money2 > 0) {
				banking = money2;
				sbanking+=banking;//누적부분
			System.out.println("은행에 저축한 금액은 = " + money2); // 1200
			System.out.println("누적 금액은 = " + sbanking); // 1200 + 2300 + ?
			}else {
				System.out.println("금액을 다시 입력해 주세요.");
				continue;
			}
			
			if(sbanking > 1000000) {
				System.out.println("하이마트로 이동");
				System.out.println("노트북 구매");
				break;
			} else if(sbanking >= 800000) {
				System.out.println("양복점으로 이동");
				System.out.println("정장 구매");
				break;
			} else if(sbanking >= 600000) {
				System.out.println("베스트샵으로 이동");
				System.out.println("디카 구입");
				break;
			} else if(sbanking >= 400000) {
				System.out.println("영화관으로 이동");
				System.out.println("영화관람/팝콘 구매");
				break;
			}else if(sbanking >= 200000) {
				System.out.println("포장마차로 이동");
				System.out.println("한턱 쏩니다");
				break;
			}else if(sbanking >= 100000) {
				System.out.println("피시방으로 이동");
				System.out.println("배틀넷 구매");
				break;
			}else if(sbanking >= 50000) {
				System.out.println("GS25로 이동");
				System.out.println("슈퍼콘 구매");
				break;
			}else if(sbanking >= 30000) {
				System.out.println("애슐리로 이동");
				System.out.println("식사");
				break;
			}else 
				System.out.println("집에서 열공합니다.!!");
				break;
			
		}
	}
	//배수 구하기
	//임의의 수를 입력받아서, 그 수가 3, 5, 7, 9의 배수인지를 판별하여 출력합니다.
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int x = sc.nextInt();
		
		if(x%3==0)
			System.out.println(x + "는 3의배수입니다.");
		if(x%5==0)
			System.out.println(x + "는 5의배수입니다.");
		if(x%7==0)
			System.out.println(x + "는 7의배수입니다.");
		if(x%9==0)
			System.out.println(x + "는 9의배수입니다.");
		else
			System.out.println("3,5,7,9의 배수가 아닙니다.");
	
	//위의 소스를 줄여서 작성해보세요.
		if(x%3==0 || x%5==0 || x%7==0 || x%9==0) {
			System.out.println("3,5,7,9의 배수 중 하나입니다.");			
		} else {
			System.out.println("3,5,7,9의 배수가 아닙니다.");		
		}
	
	//임의의 수를 입력 받아서, 그 수가 기준수보다 큰수인지, 작은수인지, 같은수 인지를 판별하여 출력하세요.
	//hint > 555
		int hint = 555;
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int x = sc.nextInt();
		if(x>hint) {System.out.println(x + "가 큰 수 입니다.");
		} else if(x<hint) {System.out.println(x + "가 작은 수입니다.");
		} else {System.out.println(x + "가 같은 수입니다.");
		}
		
	//임의의 수를 입력받아서, 1~100 사이의 숫자인지 판별하고, 그 수가 7의 배수인지 확인하여 출력하세요.
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int x = sc.nextInt();
		if(x>100 && x<0){
			System.out.println(x + "는 1~100사이의 숫자가 아닙니다.");
		}else if(100>=x && x>=1 && x%7 == 0) {
			System.out.println(x + "는 1~100 사이의 숫자중 7의 배수입니다.");
		}else{
			System.out.println(x +"는 1~100 사이의 숫자중에서 7의 배수가 아닙니다.");
		}
	
	//숫자 두 개를 입력받아서, max, min을 판별하여 출력하세요.
		Scanner sc1 = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int x = sc1.nextInt();
		Scanner sc2 = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int y = sc2.nextInt();
		if(x > y) {
			System.out.println("최대값은 " + x + " 최소값은" + y + "입니다.");
		} else if(x < y){
			System.out.println("최대값은 " + y + " 최소값은" + x + "입니다.");
		} else {System.out.println("두 수의 값은 같습니다.");
		}
		
		//강사님 풀이
		int max = 0, min = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요");
		int x = sc.nextInt();
		int y = sc.nextInt();
		if(x > y) {
			max = x;
			min = y;
		} else if(x < y){
			max = y;
			min = x;
		} System.out.println("max = " + max + ", min = " + min);
		
	
 }
				
}


'Bitcamp > BITCAMP - Java' 카테고리의 다른 글

4일차  (0) 2019.06.27
3일차 - 과제  (0) 2019.06.26
2일차 - 과제  (0) 2019.06.26
2일차 - GUISample1  (0) 2019.06.25
2일차  (0) 2019.06.25
And