주요내용 : 한글자입력, 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 |