기록

20220728 수업기록 본문

수업기록(2022-07~2022-09) JAVA

20220728 수업기록

연삐 2022. 7. 28. 21:54
07-28(목) 수업진도

1.비교연산자
2.++, -- 증감식
3.예제문제
3.조건문
-if
-switch

1.비교연산자

  • 비교연산자를 char로 사용할 경우는 unicode값으로 비교
  • 실수값들에 대하여 절대 비교연산자 사용하지 말 것 (오차가 있기 떄문임)
    • => 꼭 사용해야 된다면 실수를 정수화로 캐스팅 한 후에, 사용할 것
package p01.basic;
public class RelationalOperatorEx2 {

	public static void main(String[] args) {
		//char 유니코드 비교연산자 예시
        char ch1 = 'A';
        char ch2 = 'B';
        char ch3 = 'a';
        
        boolean bResult = (ch1 < ch2);
        System.out.println("bResult = " + bResult);
        //값 : true //A = 65, B = 66
        bResult = (ch1 < ch3);
        System.out.println("bResult = " + bResult);
		//값 : false //A = 65 , a = 97		
	}
}
package p01.basic;
public class RelationalOperatorEx2 {

	public static void main(String[] args) {
		
        double d1 = 0.1;
        float f1 = 0.1f
        
        bResult = (d1 == f1);
        System.out.println("bResult = " + bResult );
        //값 : false //0.1과 0.1f가 다르다고 판단함
        
        //실수를 정수화로 캐스팅해서 비교연산
        bResult = ((int)(d1*10)==1);
        System.out.println("bResult = " + bResult );
        //값 : true //1==1 정수화로 비교연산을하면 정확하게 판단할수있다.
	}
}

2. 증감식 ( ++., --) increment operator, decrement operator

  • C language (C++, java)에서도 사용함
  • increment operator = ++증가
    • n1++ == n1+1 
package p02.inc_dec;
public class IncrementOperatorEx {

	public static void main(String[] args) {
		int n1 = 10;
        int result;
        
        System.out.println("n1 = " + n1 ); 
        //값 : 10
        
        n1++; // n1 = n1+1 == n1+=1
        System.out.println("n1 = " + n1 );
        //값 : 11
        
        ++n1 // n1 = n1+1 == n1+=1
        System.out.println("n1 = " + n1 );
        //값 : 12
        
        result = n1++; //1. result == n1 => 2. n1=n1+1
        System.out.println("result" + result );
        //값 : 12
        // = 이퀄이 먼저 대입되고 다음으로 증감식으로 수행되기때문
        System.out.println("n1 = " + n1 );
        //값 : 13
        
        result = ++n1; //1.result = n1+1 
        System.out.println("reuslt" + result );
        //값 : 14
        System.out.println("n1 = " + n1 );
        //값 : 14
	}

}
  • decrement operator = --감소
    • n1--  == n1-1
package p01.escape.sequence;

public class DecrementOperatorEx {

	public static void main(String[] args) {
		int n1 =10;
        int result;
        
        System.out.println("n1 = " + n1);
        //값 : 10
        n1--;  // n1 = n1-1 (n1 -= 1)
        System.out.println("n1 = " + n1);
        //값 : 9
        
        --n1; // 위와 동일하다
        System.out.println("n1 = " + n1);
        //값 : 8
        
        result = n1--; //1.result = n1 -> 2. n1= n1-1
		System.out.println("result" + result);
        //값 : 8
        System.out.println("n1 = " + n1);
        //값 : 7
        
        result = --n1; //1.result = n1-1
        System.out.println("result" + result);
        //값 : 6
        System.out.println("n1 = " + n1);
        //값 : 6

	}

}

3.예제문제

  • 2개의 숫자를 프로그램 내부에서 자동생성하여 더하기 퀴즈 문제를 내는 프로그램
package p05.practice;

import java.util.Scanner;

import p02.datatypes_basic.booleanEx;

//2개의 숫자를 프로그램내부에서 자동생성하여 더하기 퀴즈 문제를 내는 프로그램
public class AdditionQuiz {

	public static void main(String[] args) {
		//1970년 1월 1일 0시 0분 0초 기준으로 현재까지 1000분의 1초 단위의 숫자를 return
		long currentTimeMillisecond = System.currentTimeMillis();
		int num1 = (int) (currentTimeMillisecond%10); // num1 : 0 ~ 9
		int num2 = (int)(currentTimeMillisecond % 10/ 10 ); 
		//난수를 발생시키는 효과를 나타냄
	
		Scanner input = new Scanner(System.in);
        
		System.out.println("숫자 "+num1+"과 숫자 "+num2+"의 합계는 얼마인가?");
		int answer = input.nextInt();
		boolean bCorrect = ((num1+num2)==answer) ; //3항 연산 false나 true로 나타냄
		System.out.println(num1+" + " + num2 + " = " + answer + "가 맞는가요?" + bCorrect );
	}
}
System.currentTimeMillis();란
1970년 1월 1일부터 경과한 시간을 long값으로 리턴하며,
밀리세컨(1/1000)초값을 리턴합니다.

세컨드 = 밀리세컨드 / 1000
밀리초는 천분의1초 
1000 밀리세컨드는 1초

3. 조건문

  • if문
    • 수식어 if(boolean) {A} else {B}
    • boolean이 true면 A;실행 else면 B;실행
    • if는 중첩이 가능하지만 가급적 중첩 if문은 사용하지 않는 것이 바람직하다
    •   -만약 중첩 if문을 사용해야 한다면 depth를 가능하면 낮게해야 함
    •   - depth는 중첩갯수 depth를 간략하게 계획하고 짜내야한다.
    • if 문은 if문 / if - else문 / if - else if - else문이있다.
      • if ( boolean) { A }
      • if ( boolean ) {A} else {B}
      • if (조건식1) { 조건식 1이 true } else if(조건식2){ 조건식 2가 true} else {조건식 1 및 조건식2가 false}
package p01.if_basic;
public class IfBasic2 {
	public static void main(String[] args) {
		int i = 10;

		if(i>0) {
			System.out.println("i는 양수입니다.");
		}
		//if문 다음에 오는 명령어가 1개만 있으면 {}를 사용안해도 됨
		// => 비추천 / 명확하지가않음 
		if(i>0) {
			System.out.println("i가 역시 양수입니다.");
		}
		if(i % 2 ==0 ) {
			System.out.println("i는 2의 배수입니다.");
		}
		if(i % 2 == 1) {
			System.out.println("i는 홀수입니다.");
		}
		if(i%5==0){
			System.out.println("i는 5의 배수입니다.");
		}
		if((i%2==0)||(i%5==0)) {
			System.out.println("i는 2의 배수이거나 5의 배수입니다.");
		}
		if((i%2 == 0) && (i%5==0)) {
			System.out.println("i는 2의 배수이고 5의 배수입니다.");
		}
		else {
			System.out.println("i는 음수입니다.");
		}
	}
}
package p01.if_basic;

//if ~ else if ~ else
public class IfBasic4 {

	public static void main(String[] args) {
		int score = 85;
		
		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 등급입니다.");
		}else {
			System.out.println("F 등급입니다.");
		}
		

	}

}
  • switch
    • switch문은 if~else if ~else로 코딩가능
    • - 가능하면 switch문을 많이 사용하는 것을 추천
    • - 유용한 적용 사례 : 주사위, 달력, 회사직급 처럼 등급이 정해져 있는 경우
package p02.switch_basic;
public class SwitchBasic {

	public static void main(String[] args) {
		System.out.println((int)(Math.random()*6));
		//diceNumber : 0, 1, 2, 3, 4, 5 중에 1개
		int diceNumber = (int)(Math.random()*6)+1;
	System.out.println("diceNumber = "+diceNumber);
	
	switch(diceNumber) {
	case 1 :// if (diceNumber == 1)
		System.out.println("주사위 1이 나왔습니다.");
		break;
	case 2 :// else if (diceNumber == 2)
		System.out.println("주사위 2이 나왔습니다.");
		break;
	case 3 :// else if (diceNumber == 3)
		System.out.println("주사위 3이 나왔습니다.");
		break;
	case 4 :// else if (diceNumber == 4)
		System.out.println("주사위 4이 나왔습니다.");
		break;	
	case 5 :// else if (diceNumber == 5)
		System.out.println("주사위 5이 나왔습니다.");
		break;
//	case 6 :// else if (diceNumber == 6)
//		System.out.println("주사위 6이 나왔습니다.");
//		break;
	default : //else
		System.out.println("주사위 6이 나왔습니다.");
		break;
	}
	}
}
수업듣고 궁금했던것
Math.random()을 int로 캐스팅하면 소숫점자리가 사라질텐데 *6을 한다고 1,2,3,4,5,6 이 나오는게 이해가 가지 않는다 ㅠㅜㅠ

'수업기록(2022-07~2022-09) JAVA' 카테고리의 다른 글

20220801 수업기록  (0) 2022.08.02
20220729 수업기록  (0) 2022.07.29
20220727 수업기록  (0) 2022.07.27
20220726 수업기록  (0) 2022.07.27
20220725 수업기록  (0) 2022.07.26
Comments