·삼항 연산자: 피연산자가 3개인 것
[조건식 ? 참일 경우의 값 : 거짓일 경우의 값]
a = a + 1; 와 마찬가지로 변수를 선언해줘야한다.
변수명 = (조건식) ? 참일 경우의 값 : 거짓일 경우의 값;
(조건식)으로는 참, 거짓의 값을 구할 수 있는 값으로 와야한다.
[강제 형변환]
int a = 10;
douvble d = 32.15;
d = a; (O)
a = d; (X)
a와 d는 데이터타입이 다르므로 대입할 수 없음.
바꾸고자 하는 데이터타입을 (데이터타입)으로 적어서 변환
==> 개발자가 필요로 의해 강제로 형 변환하는 것을 casting이라고 한다.
a = (int)d;
형 변환연산자인 (int) or (double)...은 1순위 연산자! 연산시 주의 int data = int(5 * 5 * 3.15);
데이터타입이 다른 두 타입을 연산을 위해 데이터타입이 (int->double) 자동으로 더 큰 데이터타입으로 변환하는 것을 promotion이라고 한다.
value의 값이 1씩 증가
++value;//바로 사용가능
value = value + 1; 또한 축약 가능하다!
value += 1;
value = value - 1; 또한 축약 가능하다!
value -= 1;
[IF 조건식]
버전1. 참만 신경쓸 경우
if (조건식) {
// 참일 때 실행할 문장
}
버전2. 참과 거짓을 볼 경우
if (조건식) {
// 참일 때
} else {
// 거짓일 때
}
버전3.
if(조건1) {
//참일 떄
} else if(조건2) {
// 조건 1은 거짓, 조건2는 참
} else if(조건3) {
// 조건1, 2은 거짓, 조건3는 참
} else if(조건//) {
////
}
[if문 3가지 버전 연습]
[if 연습문제]
<내가 만든 코드>
실수한 부분으로 논리연산자(&&, ||)를 사용할 때,
변수 하나만 사용해야한다.
각 과목의 점수를 뜻하는 변수 score1, score2에 걸린 조건이 같다고 if(score1, score2 > 40)은 NO!
if(avg >= 60 && score1 >= 40 && score2 >= 40) OK!
<깔끔한 코드>
System.out.println("합격"); 대신 문자열 변수 result를 선언해 합격, 불합격을 출력함.
왜지? 어떻게지? 문자열은 저렇게 대입해도 되는건가?
위에 보면 문자열 변수 result를 선언함, 이렇게 하면 일일이 System.out.println();을 사용하지 않고 출력할 수 있음.
[Scanner를 이용해 키보드로부터 값을 입력받기]
키보드 장치와 프로그램을 연결하는 장치!
import java.util.Scanner;
Scanner keyin = new Scanner(System.in);
키보드로부터 값을 입력받기 위해선, [스캐너 변수 - 입력받을 수 있는 객체 생성 선언 - 입력 - (처리_우리가 안한 부분)]
①스캐너 선언
Scanner keyin = new Scanner(System.in);
Scanner keyin = new Scanner(System.in);
keyin 키보드로부터 입력받는다는 뜻
②입력받을 변수 선언!
데이터타입에 맞게 int data; 혹은 double value;
③키보드로 입력할 수 있게 함.
변수명 = keyin.nextInt(); <==키보드로부터 정수를 입력받겠다!
변수명 = keyin.nextDouble(); <==키보드로부터 실수를 입력받겠다!
+추가설명 <표준입력과 표준출력>
키보드 입력을 받는 코드에서 등장한 'System.in'이라는 문장은 표준입력(Standard input)이라는 장치와 연결되어 있습니다. '표준입력'이란 일반적으로 컴퓨터의 '키보드'를 의미합니다.
키보드로부터 입력값을 받는다는 것을 사용자가 알기 어려우니까 데이터 입력시 안내멘트(System.out.print("입력해주세요. : " );)를 먼저 입력하고 다음 변수명 = keyin.nextInt();를 작성하는 것을 추천!
Scanner를 정리하자면
① import java.util.Scanner; 맨 위에 입력
② Scanner keyin = new Scanner(System.in);
③ 키보드로부터 입력값을 받을 수 있는 객체 생성 ex) int data; or double data;
④ System.out.println();을 이용해 키보드로부터 값을 입력 받을 수 있다는 사실을 사용자에게 알림.(필수는 아님)
⑤ 변수명 = keyin.nextInt/Double(); <= 키보드로부터 입력받을 준비가 되었다는!
[키보드로부터 값을 입력받은 값이 짝수인지 홀수인지 나타내는 문제]
내가 짠 코드.. 눙물ㅠㅠ
입력받은 숫자로 하기때문에 숫자를 다시 입력받을 필요가 없음.
==> "데이터 입력시 안내멘트 다음 입력" 이 작업을 하지 않아도 된다는 말.
a = -a; 처럼 value = value%2 == 0; 다시 넣을 필요없이
if( value%2 == 0 ) 안에 직접 넣으면 된다.
<깔끔한 코드>
· 삼항연산자를 사용해 result = (value%2 ==0) ? "짝수": "홀수"; 해도 같은 값이 나온다.
[문제: 평수 구하기]
내가 만든 코드
<깔끔한 코드>
[문제: 닭, 돼지의 다리 갯수]
내가 짠 코드..
<깔끔한 코드>
[Switch]
switch(변수/수식_정수로 변환될수 있는 수식 혹은 문자열){
case 값1 : 명령문; break;
case 값2 : 명령문; break;
case 값3 : 명령문; break;
case 값4 : 명령문; break;
default : 명령문;
}
break; 문장 밖으로 탈출해라. 개발자가 의도한 것이 아니라면 꼭 적어주기 아니면 다 출력됨.
default : 어느 것에도 해당하지 않는 경우이며, break;가 필요없다.
String family = "sister";
값이 있어야 실행한다.
[보충수업]
switch 활용 예)
왜 실행이 안되지.. 고민하지말고 타이핑을 잘했나 살펴보자
switch에서 t를 default에서 ul의 순서를 바꿔서 10분 정도 소요;;
switch 활용2 예)
나누기 값을 구할 때는 casting해줘서 형변환: (double)num2
[문제: 3 과목의 점수를 입력받아 평균 점수를 구해 90점 이상 A, 80점 이상 B, 70점 이상 C, 60점이상 D, 나머지는 F학점을 switch~case 를 이용해 코드 작성]
<내가 짠 코드>지만 아닌 걸 알면서^^ 일단 되는데까지? 해봤지만 switch는 정수로 변환되는 값만을 취급하기때문에 여기까지.. 앞 자리에 앉은 컴공과 학생말을 엿들으면 101, 80 뭐 어쩌구 저쩌구 하던데.. 난 일단 여기까지 후훟
<깔끔코드>
(Switch~Case)에서 출력할 때, System.out.println("C"); 넣는 것 보다 문자열 변수 String score를 선언해 score = "A학점" 더 간단한게 가능!
만점인 100일 경우 10에 해당되는 곳이 없기때문에 학점으로 나오지 않음
case 10 :
case 9 : score = "A학점"; break;
"A학점"이 겹치는 경우는 생략
[소수점 제어 방법]
printf : 포맷, 줄 바꿈을 못함
형식 변환 문자열 : %f 실수, %d 정수, %c 캐릭터, %s 문자열
%f : 실수형데이터를 출력하겠다
System.out.println("평균 : " + avg + ", 학점 : " + score);
System.out.printf("평균: %.2f, 학점 : %s%n", avg, score);
%.2f" : ".2 소수점 두자리까지 나타내겠다"
· ctrl + a ==> ctrl + i 전체 선택 후 들여쓰기
· ctrl + space 자동완성
'개발자로 가는 길(국비지원과정) > 1. Java' 카테고리의 다른 글
[210420화] for문 (0) | 2021.04.20 |
---|---|
[210419월] 반복문 (0) | 2021.04.19 |
[210414수] 복습 + 연산자 연습문제 (0) | 2021.04.14 |
[210413화] 자바 연산자 + 연습문제 (0) | 2021.04.13 |
[210412월] Java 첫수업_자바설치&이클립스 + 자료형 (0) | 2021.04.12 |