개발자로 가는길 :: 2/22 자바 수업 ( 연산자 , 조건문(if) )

2/22 자바 수업 ( 연산자 , 조건문(if) )

728x90
반응형

어제 수업들으면서 적은거 다시 보니까 눈에 잘 안들어와서

오늘부터는 조금 깔끔하게 정리해보려고 노력중


1교시 (09:30~10:20)

 

연산자 


/*연산자
 * 1)단항 연산자
  *  +,-,++,--,~,!
 

* 2)이항 연산자
 *  산술 : + ,- , * ,/ ,% ,<< ,>> ,>>>
 *  비교 : > , <, >= , <= , == < !=
 *  논리 : &&(and), ||(or), &(and), ^(xor), |(or)

 

 * 3)삼항 연산자 : ? :

 

 * 4)대입 연산자 : =   ex) a=4; 
   

 

 * 연산자 우선순위
  * 연산자의 우선순위는 괄호로 지정해줘야 한다

 

단항연산자

public class OperatioEx1 {

	public static void main(String[] args) {
		// ++ , -- : 전위, 후위에 위치
		//전위 : 값이 참조되기 전에 증가시킴
		//후위 : 값이 참조된 후 증가시킴
		int i=5;
		i++; // i = i+1 ;
		System.out.println(i);
		
		i=5;
		++i; 
		System.out.println(i);
		//위의 두 식 모두 결과는 같음. i = 6 
		
		int i=5 , j =0;
		j= i++; // 1. j = i -> 2. i = i+1 이 실행되는 구조				
		System.out.println("j=i++실행후\ni=" + i + " \nj=" + j);
        //결과 j=5 , i=6
		
		i = 5;
		j = 0;
		j= ++i; // 1. i = i+1  -> 2. j = i ;
		System.out.println("j=++i실행후\ni=" + i + " \nj=" + j);
        //결과 j=6 , i=6 
		
	}

}

 

연산자의 우선순위가 있다.


2교시 (10:30 ~ 11:20)

		boolean play = true ; 
		System.out.println("play = "+play);
		System.out.println("!play = "+!play);
		// ! : true -> false , false -> true
		// 피연산자가 boolean 값을 가질때만 사용 가능
		// !true , !false

여기까지 단항 연산자

 

비교연산자

package ch2;

public class OperatioEx2 {

	public static void main(String[] args) {
		int num1=10 ; 
		int num2=10 ;
		
		//비교 연산자 : boolean 값으로 나온다
		System.out.println(num1 == num2); //true
		System.out.println(num1 != num2); //false
		System.out.println(num1 > num2);  //false
		System.out.println(num1 > num2);  //false
		System.out.println(num1 >= num2); //true		
		System.out.println(num1 <= num2); //true
		
		boolean result = num1 == num2 ; // boolean 타입의 변수로 저장이 가능하다
		System.out.println(result);
		
		
		char ch1= 'A';
		char ch2= 'B';
		// A : 65 , B : 66 의값으로 비교연산자 적용 (a:97 .... )
		System.out.println(ch1==ch2); //false
		System.out.println(ch1>ch2); //false
		System.out.println(ch1<ch2); //true
		
		double d1 = 0.4 ;
		float f1 = 0.4f ;
		//정밀도의 차이로 double 값이 더 크게 표현이 된다
		System.out.println(d1 == f1 ); // false 
		System.out.println(d1 != f1 ); // true
		System.out.println(d1 >= f1 ); // false
		System.out.println(d1 <= f1 ); // true		
		
		
	}

}

 

논리연산자

package ch2;

public class OperatioEx3 {

	public static void main(String[] args) {
		
		// 논리연산자 : true , false 를 주고 , 결과도 true , false로 나온다
		// && (and 결합) : X는 10보다 크고 , 20보다 작다  
		// X>10 && X<20 
		// || (or 결합) : i는 2의 배수 또는 3의 배수이다  
		// i%2 == 0 || i%3 == 0
		// 연습문제1. i는 2의 배수 또는 3의 배수이지만 6의 배수는 아니다
		// 			( i%2 == 0 || i%3 == 0 ) && i%6 != 0
		
		int charCode='A';
		if ((charCode >=65) && (charCode <= 90 )) {
			System.out.println("대문자");
		}
		
		int x=15;
		if (x > 10 && x < 20 ) {
			System.out.println("x는 10~20 사이에 있음");
		}
	}

}

삼항 연산자

		// 삼항 연산자 -> ? :  
		// 조건 ? 참:거짓 
		// 두 수를 비교해서 앞의 수가 크면 앞 의 수를 변수에 담고
		// 뒤의 수가 크면 뒷수를 변수에 담기
		// 5 > 3 ? 5 : 3  
		// x > y ? x : y
		
		int x = 5;
		int y = 3;
		int result = 5>3 ? 5:3 ;
		System.out.println(result); // 5 > 3 true 이므로 5가 출력

3교시(11:30 ~ 12:20)

 

연습문제

package ch2;

import java.util.Scanner;

public class OperatioEx5 {

	public static void main(String[] args) {
		//534자루의 연필을 30명의 학생들에게 똑같은 개수로 나눌 때
		//학생 한 명당 몇 개를 가질 수 있고 , 연필의 나머지는 몇개인지 출력하기
		//출력) 학생 한명당 : 몇개 ,
		//	   남은 연필수 : 몇개
		
		int pencil = 534 , student = 30;
		int num1 = pencil/student ;
		int num2 = pencil%student ;
		
		System.out.println("한명당 : "+ num1);
		System.out.println("나머지 : "+ num2);
		
		//사다리꼴 너비 구하기
		// 윗변 : 5 , 아랫변 10 , 높이: 7 인 사다리꼴 너비 구하기
		// 변수 사용 , 소수 자릿수까지 출력
		
		int up = 5;
		int dow = 10;
		int hei = 7;
		double result = ((up+dow)*hei)/2.0; //2로 나눌때 실수로 나눠줘야 결과값이 정확히 나옴 
		                                    // 또는 int변수를 doule로 강제 형변환 가능
		System.out.println("넓이는"+result);
		
		
		//한달 월급을 10년동안 저축할 때 최종 저축금액 구하기
		// 조건 : 사용자로부터 한달 월급 입력받기
		// 출력 : 10년 저축금액 : 얼마
		
		Scanner sc = new Scanner(System.in);
		System.out.println("월급을 입력하세요:");
		int numm = Integer.parseInt(sc.nextLine());
		int mon = 12;
		int year = 10;
		long result1 = (numm*mon)*year;
		System.out.println("10년간 저축액은"+result1+"원 입니다.");
		
		
		//화씨 온도를 섭씨 온도로 변경하기
		//화씨 온도가 100일때 섭씨 온도가 얼마인지 출력하기
		//섭씨온도 = 5/9 * (화씨온도-32)
		
		int numm1  = 100 ;
		double numm2  = (double)5/9;
		System.out.println("화씨 100도는 섭씨"+numm2*(numm1-32)+("도 입니다."));
	}

}

전체적으로 정답은 맞았지만 조금더 숙련이 필요할듯. 조금더 유연한 사고로 코드 작성해야겠다


4교시 (12:30 ~ 13:20)

 

조건문 ( If )

 

package ch3;
/* 조건문
 * 조건식과 실행될 하나의 문장 또는 블럭으로 구성됨
 * 종류 : if (주로 사용) , switch 
 * 
 * 1.if
 *  1)if
 *  2)if~else
 *  3)if~else if
 */
public class IfEx1 {

	public static void main(String[] args) {
		
		//조건 : true , false 로 판별될 수 있는 경우 사용
		
//		if (condition) {
//			블럭 실행 여부는 조건이 true 일때만
//		}
//		else {
//		false 일때 			
//		}
//		
		int num = 1;
		
		//num값이 0이라면 num=0 이라고 출력하겠다
		if (num==0) {
			System.out.println("num=0");	 //true 일때	
		}
		
		else {
			System.out.println("num!=0");	//false 일때
		}

		
//		성적이 90이상일때 A, 성적이 80이상일때 B , 70 C.....
//		if (조건1) {
//			조건 1 true 일때 출력
//		}
//		else if (조건2) {
//			조건 2 true 일때 출력
//		}
//		else if (조건3) {
//			조건 3 true 일때 출력
//		}
	}

}

5교시 (14:30~15:20)

 

조건문 if ~ else if 부터

//		성적이 90이상일때 S, 성적이 80이상일때 A , 70 B.....
//		if (조건1) {
//			조건 1 true 일때 출력
//		}
//		else if (조건2) {
//			조건 2 true 일때 출력
//		}
//		else if (조건3) {
//			조건 3 true 일때 출력
//		}
		System.out.println("점수입력");
		int Score = Integer.parseInt(sc.nextLine());
		char grade = ' ' ;
		if (Score>=90) {
			
			grade = 's';		
			
		}
		else if (Score>=80) {
			grade = 'a';
		}
		else if (Score>=70) {
			
			grade = 'b';
			
		}else if (Score>=60) {
			
			grade='c';
			
		}else if (Score>=50) {
			grade = 'e';
			
		}
		else {
			grade = 'f';
			
		}
		System.out.printf("점수 : %d , 등급: %c \n",Score, grade);
        
        //결과 값 
        //점수를 입력하세요 : 100
        //점수 : 100 , 등급 : s

char grade = '  ' ; 빈칸을 넣어 초기화

 

package ch3;
import java.util.Scanner;

public class IfEx3 {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);

		System.out.println("숫자를 입력해주세요");
		int input = Integer.parseInt(sc.nextLine());
		String result ="";
//		String result1 = input%2 == 0 ? "짝수":"홀수" ;
//		System.out.println(result1);
		if (input%2==0) {
			result="짝수";
		}
		else {
			 result="홀수";
		}
		System.out.println(result);
// 삼항연산자 <> if 문중 편한걸 쓰면 됨 (취향 존중)
	}

}

 

연습문제 - 삼항연산자 <> if 문 서로 바꿔쓸수있음 (취향껏 쓰면된다고 한다)

 


6교시 (15:30 ~16:20)

 

package ch3;
import java.util.Scanner;

public class IfEx4 {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		// 근무시간 입력받기
		// 8시간 근무시 시간당 9800원 일때
		// 초과 근무시 시간당 시급 1.5배 지급
		System.out.println("근무시간 입력해주세요");
		int hours = Integer.parseInt(sc.nextLine());
		int rate = 9800;
		int result = 0 ;
						
		if (hours <= 8 ) {
			
			result = hours * rate;
			
		}
		
		else if (hours>8 ) {
			
			 result = (int)((hours-8)*rate*1.5)+8*rate ;
		}
		
		System.out.println("급여는"+result+"입니다");
		
	}

}

연습문제 2 / 그냥 if 랑 else 만 쓰면됐는데 혼자 복잡하게 만들었다; 그렇게 복잡하진 않지만

8시간 이상일때만 계산하면됐는디...

 

// 키, 몸무게 입력받기
		// 저체중 , 표준 , 과체중 출력 프로그램 작성
		// (키 - 100)*0.9 < 몸무게 과체중 
		// (키 - 100)*0.9 = 몸무게 표준 
		// (키 - 100)*0.9 > 몸무게 저체중
		System.out.println("키를 입력해주세요");
		int height = Integer.parseInt(sc.nextLine());
		System.out.println("몸무게를 입력해주세요");
		int weight = Integer.parseInt(sc.nextLine());
		
		
		if ((height-100)*0.9 == weight) {
			
			System.out.println("표준체중 입니다");
		}
		else if((height-100)*0.9>weight) {
			
			System.out.println("저체중 입니다 표준체중은"+((height-100)*0.9)+"입니다");
		}
		else if((height-100)*0.9<weight) {
			
			System.out.println("과체중 입니다 표준체중운 "+((height-100)*0.9)+"입니다");

연습문제2 . 다 작성했는데 시간이 남는것 같아서 오바를 했다.

그냥 복붙해서 if 문 마다 수식을 넣었는데 그냥 double 로 변수 하나 만들어서 저장 했어야하는데 뭐했나 싶다.... 잘하자

밑엔 수정코드

		// 키, 몸무게 입력받기
		// 저체중 , 표준 , 과체중 출력 프로그램 작성
		// (키 - 100)*0.9 < 몸무게 과체중 
		// (키 - 100)*0.9 = 몸무게 표준 
		// (키 - 100)*0.9 > 몸무게 저체중
		System.out.println("키를 입력해주세요");
		int height = Integer.parseInt(sc.nextLine());
		System.out.println("몸무게를 입력해주세요");
		int weight = Integer.parseInt(sc.nextLine());
		double result = (height-100)*0.9;
		
		if (result == weight) {
			
			System.out.println("표준체중 입니다");
		}
		else if(result>weight) {
			
			System.out.println("저체중 입니다 표준체중은"+result+"입니다");
		}
		else if(result<weight) {
			
			System.out.println("과체중 입니다 표준체중운 "+result+"입니다");
			
		}

7교시(16:30~17:20)

		int year = Integer.parseInt(sc.nextLine());
		// 윤년 : 연도를 4로 나눈 나머지가 0이고 , 
		//연도를 100으로 나눈 나머지가 0이 아니거나 , 
		//연도를 400으로 나눈 나머지가 0이면
		boolean result1 = year%4 == 0 && year%400==0 ;
		boolean result2 = year%4 == 0 && year%100!=0 ;
		
		if (result1||result2) {
			System.out.println("윤년");
		}
		else {
			System.out.println("평년");
		}

연습문제 - 윤년 평년 구하기 인데 맞게 쓴지 모르겠다 ; 집에 잠깐 누가와서 못들었다 일단 결과값이 나오긴 한다

 

// 임의의 숫자 3개 입력을 받기
		// 입력받은 3개의 숫자 중 가장 작은 수 출력
		
		System.out.println("첫번째 숫자 입력");
		int num1 = Integer.parseInt(sc.nextLine());
		System.out.println("두번째 숫자 입력");
		int num2 = Integer.parseInt(sc.nextLine());
		System.out.println("세번째 숫자 입력");
		int num3 = Integer.parseInt(sc.nextLine());
		
		if (num1<num2 && num1<num3) {
			System.out.println("가장 작은수는 "+num1);
		}
		else if (num2<num1 && num2<num3) {
			System.out.println("가장 작은수는 "+num2);
		}
		else if (num3<num1 && num3<num2) {
			System.out.println("가장 작은수는 "+num3);
		}
		//선생님 답안 
		// int min = num1; 
		// if(min>num2){
		//	min=num2
		// }
		// if(min>num3){
		//	min=num3
		// }
		//System.out.println("가장 작은 수 " + min);

연습문제 - 가장 작은 수 찾기 

와 넘 쉽게 생각했는데 선생님 코드가 짧고 좋다 . if 문을 연달아사용하면 두 if 모두 거쳐 결과가 나온다

 true -> fals -> 출력 true

 false -> true -> 출력 true

 true -> true -> 출력 마지막true 인듯 하다

 

package ch3;
import java.util.Scanner;

public class IfEx5 {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		//중첩 if
		//점수 입력을 받아서  90이상일때 A , 98이상이라면 A+, 94미만 A-
		//80이상이면 B , 88이상이면 B+ , 84 미만 B-
		
		System.out.println("점수를 입력해 주세요");
		int num = Integer.parseInt(sc.nextLine());
		char grade = ' ', opt='0';
		
		if (num>=90) {
			grade = 'A';
			if (num>=98) {
				opt = '+';
			}
			else if(num<=94) {
				opt = '-';
			}
			System.out.printf("학점%c%c",grade,opt);			
		}
		else if(num >=80) {
			grade = 'B';
			if (num>=88) {
				opt = '+';
			}
			else if(num<=84) {
				opt = '-';
			}
			System.out.printf("학점%c%c",grade,opt);	
		}
		else {
			System.out.println("낙제");
		}
		
	}

}

연습문제 - if 중첩문 이용  학점 부여하기.


8교시 (17:30 ~ 18:20)

 

switch 문

		int month = 4;
				
		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 1:
		case 2:
			System.out.println("현재 계절은 겨울");
			break;
		} //if 문보다 효율적이지 못하다.

switch 문은 if 문보다 효율적이지 못한것 같은데 가독성은 좋다 / 많이 쓰지 않는다고 한다

 

수업 종료

 

728x90
반응형

댓글()