🔗 복습하기
long longVal = (long) doubleVal; // (long)입력으로 casting 실행.
A
? B
: C
A
가 true
이면 B
를 실행하고, A
가 false
면 C
실행해라.
1️⃣
비교 연산자
==
, !=
, <
, >
, <=
, >=
대소(<
, <=
, >
, >=
) 또는 동등(==
, !=
) 비교해서
boolean
타입 true
/false
산출함.
char
를 사용할 경우 , 유니코드(unicode) 값으로 비교함.✍️ 비교 연산자 사용하기(실습)
⌨️ coding ⤵️
package p01.basic;
public class RelationalOperatorEx2 {
public static void main(String[] args) {
char ch1 = 'A';
char ch2 = 'B';
boolean bResult = (ch1 <ch2);
System.out.println("bResult = " + bResult);
double d1 =0.1;
float f1 = 0.1f;
bResult = (d1 == f1);
System.out.println("bResult = " + bResult);
bResult = (d1 == 0.1); //0.1이 double타입으로 저장됨.--> 실행가능
System.out.println("bResult = " + bResult);//--> 권장하지 않음.
bResult = ((int)(d1*10) == 1); //0.1이 double타입으로 저장됨.--> 실행가능
System.out.println("bResult = " + bResult);
bResult = ((float)d1 == f1);
System.out.println("bResult = " + bResult);
}
}
🖥 print ⤵️
2️⃣
증감 연산자
increment operator : ++
(증가)
decrement operator : --
(감소)
IncrementOperatorEx
n1++ == n1+1
c언어 스타일임. (c++, java)
✍️ increment operator :
++
(증가)(실습)
⌨️ coding ⤵️
package p02.inc_dec;
// increment operator : ++
public class IncrementOperatorEx {
public static void main(String[] args) {
int n1 = 10;
int result;
System.out.println("n1= " + n1);
n1++; // n1 += 1, (n1 = n1 + 1)와 같은 의미
System.out.println("n1= " + n1);
++n1; // n1 += 1
System.out.println("n1= " + n1);
result = n1++; // result = n1;처리 후, m1 += 1;실행
System.out.println("result= " + result);
System.out.println("n1= " + n1);
result = ++n1; // n1 += 1;처리 후, result = n1;실행
System.out.println("result= " + result);
System.out.println("n1= " + n1);
}
}
🖥 print ⤵️
✍️ decrement operator : -- (감소)(실습)
⌨️ coding ⤵️
package p02.inc_dec;
// decrement operator : --
public class DecrementOperatorEx {
public static void main(String[] args) {
int n1 = 10;
int result;
System.out.println("n1= " + n1);
n1--; // n1 -= 1, (n1 = n1 - 1)와 같은 의미
System.out.println("n1= " + n1);
--n1; // n1 -= 1
System.out.println("n1= " + n1);
result = n1--; // result = n1;처리 후, n1 -= 1;실행
System.out.println("result= " + result);
System.out.println("n1= " + n1);
result = --n1; // n1 -= 1;처리 후, result = n1;실행
System.out.println("result= " + result);
System.out.println("n1= " + n1);
}
}
🖥 print ⤵️
3️⃣
실수 산술 연산
✍️ 실수 산술 연산이 잘못된 경우(실습)
'실수'로 산술 연산시 데이터 타입을 잘못 사용한 경우.
⌨️ coding ⤵️
package p03.realnumber_problem;
public class RealNumberWrongUseEx {
public static void main(String[] args) {
float f1 = 0.1f;
double d1 = 0.1;
System.out.println("f1 = " + f1);
System.out.println("d1 = " + d1);
// -------------------------------------------------
int apple = 1;
double pieceUnit = 0.1d;
// float pieceUnit = 0.1f; --> 데이터 타입을 바꿔서 에러 수정 가능
int number = 7;
double result = apple - number * pieceUnit;
// 실수로 산술 연산을 하면 오류가 발생함.
System.out.println("사과 1개에서 ");
System.out.println("0.7 조각을 빼면, ");
System.out.println(result + "조각이 남음 ");
// pieceUnit의 데이터 타입이 너무 크게 주어져서 생긴 결과임.
}
}
🖥 print ⤵️
⌨️ coding ⤵️
package p03.realnumber_problem;
// 프로그램에서 실수로 산술 연산을 가급적 하지 말 것.(오차 발생함.)
public class RealNumberWrongUseEx {
public static void main(String[] args) {
float f1 = 0.1f;
double d1 = 0.1;
System.out.println("f1 = " + f1);
System.out.println("d1 = " + d1);
// -------------------------------------------------
int apple = 1;
// double pieceUnit = 0.1d;
float pieceUnit = 0.1f;
int number = 7;
double result = apple - number * pieceUnit;
System.out.println("사과 1개에서 ");
System.out.println("0.7 조각을 빼면, ");
System.out.println(result + "조각이 남음 ");
}
}
🖥 print ⤵️
1️⃣
Infinity와 NaN
Infinity
: 부모를 0으로 나눌 경우
NaN
: Not a Number
Infinity
와 NaN
을 이용해 연산 가능 여부를 확인 할 수 있음.
✍️ Infinity와 NaN 산출 가능 여부 프로그램(실습)
⌨️ coding ⤵️
public static void main(String[] args) {
int x = 5;
double y = 0.0;
double z;
z = x/y; // 5/0 = infinity
System.out.println("z = " + z);
if ((Double.isInfinite(z)) || (Double.isNaN(z))) {
System.out.println("z의 값을 산출 할 수 없습니다.");
}else {
z = z+2;
}
//------------------------------------------------
z = x%y; // 5%0 = NaN
System.out.println("z = " + z);
if ((Double.isInfinite(z)) || (Double.isNaN(z))) {
System.out.println("z의 값을 산출 할 수 없습니다.");
}else {
z = z+2;
}
}
🖥 print ⤵️
2️⃣
currentTimeMillisecond 메소드 사용하기
.currentTimeMillisecond
메소드
1970년1월1일 0시0분0초를 기준으로 현재까지1/1000초단위 숫자 리턴한 값.
1day = 24 * 60 * 60 * 1000 second
✍️ 더하기 퀴즈 내는 프로그램(실습)
2개의 숫자를 프로그램 내부에서 자동 생성해, 더하기 퀴즈를 내는 프로그램.
⌨️ coding ⤵️
long currentTimeMillisecond = System.currentTimeMillis();
int num1 = (int) (currentTimeMillisecond % 10) ;
// num1 = 0~9
int num2 = (int) (currentTimeMillisecond / 100 % 10) ;
/*
* % 10 --> 마지막 숫자 자져옴
* / 10 % 10 --> 마지막에서 두번째 숫자 가져옴
* / 100 % 10 --> 마지막에서 세번째 숫자 가져옴
*/
System.out.println("currentTimeMillisecond = " + currentTimeMillisecond);
// 1970년1월1일 0시0분0초를 기준으로 현재까지 1/1000초 단위 숫자 return한 값 출력
System.out.println("num1 =" + num1);
System.out.println("num2 =" + num2);
System.out.println("숫자"+ num1 + "과 숫자"+ num2 + "의 합계는 얼마인가?");
// 숫자 2개를 콘솔창에 제시함.
Scanner input = new Scanner(System.in);
// 콘솔창에 사용자로부터 값을 받음.
int answer = input.nextInt();
// 콘솔에서 받은 값을 answer에 넣음.
boolean bCorrect = ((num1+num2) == answer);
//boolean 참/거짓을 구별해 출력함.
//num1과 num2를 더한 값이 콘솔에서 입력 받은 값과 같은지 구별해 참/거짓 출력.
System.out.println(num1 + "+" + num2 + "=" + answer + "가 맞는가요?" + bCorrect);
}
🖥 print ⤵️
✍️ 입력된 숫자를 분으로 출력하기(실습)
⌨️ coding ⤵️
Scanner input = new Scanner(System.in);
System.out.println("3600이하의 숫자를 입력하세요");
//
int seconds = input.nextInt();
int minutes = seconds / 60;
int remainingSeconds = seconds % 60;
System.out.println("입력된"+ seconds + "초를 계산하면" + minutes + "분" + remainingSeconds + "초 입니다.");
🖥 print ⤵️
✍️ 현재시간 출력하기(실습)
⌨️ coding ⤵️
long totalMilliSeconds = System.currentTimeMillis();
System.out.println( "totalMilliSeconds"+ totalMilliSeconds);
long totalSeconds = totalMilliSeconds / 1000;
// 1 milliseconds는 1 seconds * 10^-3
// 1 seconds는 1 milliseconds / 10^-3
System.out.println("totalSeconsds = "+ totalSeconds);
long currentSecond = totalSeconds % 60;
//1 seconds는 1 miniute / 60
//1 miniute은 1 seconds % 60
System.out.println("currentSecond = "+ currentSecond);
long totalMininte = totalSeconds / 60;
System.out.println("totalMininte = "+ totalMininte);
long currentMininte = totalMininte % 60;
System.out.println("currentMininte = "+ currentMininte);
long totalHours = totalMininte / 60;
long currentHours = totalHours % 24;
System.out.println("현재시간은 " + currentHours + "시" +
currentMininte + "분" + currentSecond +"초 입니다" );
🖥 print ⤵️
✍️ 화씨를 섭씨로 바꿔주는 프로그램 만들기.(실습)
⌨️ coding ⤵️
Scanner input = new Scanner(System.in);
System.out.println("화씨를 입력하세요");
double fahrenheit = input.nextDouble();
double celcius = (5.0/9) * (fahrenheit - 32);
// double celcius = ((double)5/9) * (fahrenheit - 32); //위와 같은 표현임.
System.out.println("입력된 화씨 " + fahrenheit + "는 섭씨" + celcius + "도 입니다.");
🖥 print ⤵️
🔍제어문이란?
정상적인 코드 흐름은 위에서 아래로 왼쪽에서 오른쪽으로 흐름.
제어문 안에 제어문 쓸 수 있음.(중첩제어문)
1️⃣
제어문 종류
조건문
if문
switch문
반복문
for문
while문
do-while문
break문
continue문
중첩 제어문
제어문이 필요한 사례
1️⃣
if문
if
(boolean
or 변수
) {A
} else
{B
}형식으로 사용.
➡️boolean
값이 true
면 A
실행; false
면 B
실행
✍️ if문(실습)
⌨️ coding ⤵️
Scanner input = new Scanner(System.in);
int radius = input.nextInt();
double area = 0.0;
area = radius * radius * 3.14;
System.out.println("원의 면적은 " + area + "입니다.");
// 음수 값을 넣어도 결과 값이 나옴
//---------------------------------
// 음수 값을 넣으면 안되도록 if문 사용
if (radius >= 0) {
area = radius * radius * 3.14;
System.out.println("원의 면적은 " + area + "입니다.");
} else {
System.out.println("반지름은 양수를 입력하셔야 합니다.");
}
🖥 print ⤵️
💡: if문
다음에 오는 명령어가 1개만 있느면 {}
를 사용하지 않아도 실행 가능함.
🧑🏻🏫 : "중괄호를 사용하지 않는 방법은 나중에 line이 늘어나면 알아보기 힘들어요. 가독성을 생각해 별로 추천하지 않는 방법입니다."
✍️ if ~ else if ~ else문(실습)
⌨️ coding ⤵️
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 if (score >= 50) {
System.out.println("E등급입니다.");
} else {
System.out.println("F등급입니다.");
}
🖥 print ⤵️
1️⃣
Math.random() 메소드 사용하기.
Math.random()
은 리턴 값을 0~0.99999사이의 실수값
넘김.
Math.random()*10
은 0~9.99999 값을 넘겨줌.
(int)(Math.random()*10)
은 0 ~ 9 사이의 정수값
을 받을 수 있음.
✍️ Math.random() 뺄셈 퀴즈 프로그램 만들기(실습)
/*
⌨️ coding ⤵️
int num1 = (int) (Math.random() * 10);
int num2 = (int) (Math.random() * 10);
if (num1 < num2) {
// 3개의 숫자를 맞바꾸는 로직 {swapping}
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
System.out.println("num1이 " + num1 + "이고, " +
" num2가 " + num2 + "인 경우 num1 - num2의 값은?");
Scanner input = new Scanner(System.in);
int answer = input.nextInt();
if ((num1 - num2) == answer) {
System.out.println("맞음");
} else {
System.out.println("틀림");
System.out.println(num1 + "-" + num2 + "는 " + (num1 + num2) + "임.");
}
🖥 print ⤵️
3️⃣
중첩 if문
*연속성 : 소스파일을 유지보수해서 계속 사용할 수 있도록 하는 것을 의미함.
✍️ 중첩 if문(실습)
⌨️ coding ⤵️
int i = 10;
int j = 5;
int k = 7;
if (i > k) {
if (j > k) {
System.out.println("i와 j는 k보다 큽니다.");
} else {
System.out.println("k는 i보다 작지만 j보다 큽니다.");
}
} else {
System.out.println("i는 k보다 작거나 같습니다.");
}
🖥 print ⤵️
4️⃣
switch문
변수나 연산식의 값에 따라 실행문 선택할 때 사용.
break
: 해당 case
만 실행하고 switch문
을 빠져나오게 하는 효과.
중간에 break
를 넣으면 연산식이 switch문
을 빠져나오면서 나머지 값을 다 가지고 나옴.
조건이 아닌 경우를 나누는 if else문
과 다르게
switch문
은 case
에 맞는 경우만 찾고 break
.
가능하면 switch문을 많이 사용하는 것을 권함.
switch문
사례
: 주사위, 달력, 회사직급 처럼 등급이 정해져 있는 경우에 사용하기 좋음.
✍️ 랜덤으로 주사위 값 받기.(실습)
⌨️ coding ⤵️
//diceNumber는 1 2 3 4 5 6 중에 하나
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;
default: // else (diceNumber == 6)
System.out.println("주사위 6 나왔습니다.");
break;
}
🖥 print ⤵️
5️⃣
switch문에서 case에 사용 가능한 데이터 타입
byte
char
short
int
long
string
💡: float
과 double
은 사용 불가
➡️ 오차가 있어서(불확실함)
✍️ Switch문 If~ else if문으로 바꾸기 (실습)
⌨️ coding ⤵️
char grade = 'A';
switch (grade) {
case 'A':
case 'E':
case 'B':
System.out.println("우수 회원입니다.");
break;
case 'C':
case 'D':
System.out.println("일반 회원입니다.");
break;
}
//----------------------------------------------------
//if문으로 바꿔주면
if ((grade == 'A')||(grade == 'E' ) ||(grade == 'B' )) {
System.out.println("우수 회원입니다.");
}else if ((grade == 'C')||(grade == 'D' )) {
System.out.println("일반 회원입니다.");
}
🖥 print ⤵️