2/22 자바 수업 ( 연산자 , 조건문(if) )
어제 수업들으면서 적은거 다시 보니까 눈에 잘 안들어와서
오늘부터는 조금 깔끔하게 정리해보려고 노력중
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 문보다 효율적이지 못한것 같은데 가독성은 좋다 / 많이 쓰지 않는다고 한다
수업 종료
'개발 > K-DigitalTraining 수강중' 카테고리의 다른 글
Mac OS 맥에서 Java 개발환경 셋팅중 (feat.VScode) (0) | 2023.02.26 |
---|---|
chapGPT 에게 자바 수업을 받고있다.. (0) | 2023.02.26 |
2/24 자바 수업 ( 배열 , 클래스 ) (0) | 2023.02.26 |
2/23 자바 수업 (switch문 ~ 반복문 for , while , do ~ while, 배열) (0) | 2023.02.23 |
2/21 자바 첫 수업 (개발 환경 구축, 클래스 , 변수) (0) | 2023.02.21 |