3월 7일 내용정리
*복습하기
<논리연산자>
결과는 true, false로 나옴 ->true 와 false를 따질수 있다면 조건식 이라한다.
쇼트서킷:논리 연산자에 연결된 모든 조건식을 수행하지 않고 필요한 조건식만 수행하는 것
-&&:그리고 (and) 둘중의 모두 true여야 결과가 true이다.
&&연산자는 왼쪽이 false가 나오면 오른쪽 부분은 검사를 아예안하니까 오른쪽에 증감식을 넣으면 계산이 안됨.
-|| : 또는 (or) 둘중의 하나만 true이면 결과가 true이다.
||연산자는 왼쪽이 true나오면 오른쪽은 검사를 아예안하므로 오른쪽에 증감식 넣으면 계산이 안됨.
-! : 결과식의 반대 !(true) ---> false , !(false) ---> true
-컴터는 0 - false, 0이외의 모든숫자 - true 로 인식 한다.
1.<증감연산자>
증가 연산자, 값을 1씩 증가
++i => i = i +1 (전치 또는 전위형 이다. 나먼저 증가하고 계산에 참여할께)
i+=1 (축약형)
a=3
b=1
b=++a +b b=5가됨
++a=>3+1 가되고 b값을 더한다. ++a를 먼저 증감식을 적용하여 먼저 계산한다.
i++ => i = i+1(후치 또는 후위형 이다. 계산먼저 하고 나중에 내가 증가할께)
i+=1(축약형)
a=3
b=1
b=a++ +b b=4가됨
a+b를 먼저 계산하고 a++를 증가한다.
2.<감소연산자>
-- 감소연산자,1을 감소한다.
--i => i = i - 1 (전치 또는 전위형 이다.나 먼저 빼고 계산에 참여할께.)
i - =1(축약형)
i-- => i = i - 1;(후치 또는 후위형 이다. 먼저 계산에 참여하고 난 후에 빼기할께.)
i - =1(축약형)
3.<조건 연산자, 삼항 연산자>
조건식 ? 식의 결과가 참일때 실행한 문장: 조건식의 결과가 거짓일 때 실행한 문장
예)class1 % 2==1?"청팀":"홍팀"
4.짝수/ 홀수 판별
숫자%2 ==1 --->홀수
숫자%2 ==0 --->짝수
숫자%n ==0 --->n의 배수
예 ) 숫자 % 3 ==0 --->3의 배수
예 ) 숫자 % 5 ==0 --->5의 배수
예) num=79 이 홀수 인지 짝수 인지 판별
String result=(num%2==1) ? "홀수":"짝수"
package example_0307;
public class study_0307 {
public static void main(String[] args) {
// 문1 다음 소스코드들을 보고 출력 결과를 예측하시오.
int x=0, y=1;
System.out.println((x < 1) || (y-- < 1)); // 0<1 or 1 <1 -> true or false ->true ----------->해설 쇼트서킷때문에 왼쪽만 계산하고 오른쪽 계산안함
System.out.println("1) x = " + x + ", y = " + y); // x=0 or y=-1 ----------->x=0 or y=1
x=0;
y=1;
System.out.println((x >1) || (--y < 1)); // 0>1 or 0<1 -> false or true ->true ----------->전위형 이므로 먼저 계산하고 비교논리함
System.out.println("2) x = " + x + ", y = " + y); // x=0 y=0
System.out.println((x > 1) && (y-- < 1)); // 0>1 && 1<1 -> false && false ->false ----------->해설 쇼트서킷때문에 왼쪽만 계산하고 오른쪽 계산안함
System.out.println("3) x = " + x + ", y = " + y); // x=0,y=0----------->x=0,y=1
//문2 다음 출력 결과를 예측
int a=5;
a++;
System.out.println(a); //a=6
a=5;
++a;
System.out.println(a); //a=6
//문3 다음 결과를 예측하시오.
int j=5, k=0;
System.out.println("j = j++; 실행 전 , j = " + j + ", k = " + k); //j=5, k =0
k = j++;
System.out.println("j = j++; 실행 후 , j = " + j + ", k = " + k); // j를 k에 먼저 넘겨주고, j증가. j=6, k =5
j=5;
k=0;
k = ++j;
System.out.println("j = ++j; 실행 후 , j = " + j + ", k = " + k); // j먼저 증가하고 j를 k에 넘겨준다. j=6, k=6
}
}
문제 풀이
package practice_0307;
import java.util.Scanner;
public class practice_0307 {
public static void main(String[] args) {
/*// 문4. 반을 입력 받아서 반이 홀수이면 '청팀', 짝수이면 '홍팀'으로 출력하시오.
Scanner scan=new Scanner (System.in);
System.out.println("반을 입력하시오");
int class1 = scan.nextInt();
if(class1 % 2==1) {
System.out.println("청팀");
}else {
System.out.println("홍팀");
}
System.out.println(class1 % 2==1?"청팀":"홍팀"); ------>삼항 연산자 적용해서 풀기
// 문5. 숫자를 입력 받아서 숫자가 2의 배수이거나 또는 5의 배수이면 '제주도 여행', 그렇지 않으면 '울릉도 여행'
//Scanner scan=new Scanner (System.in);
System.out.println("숫자를 입력하시오01");
int num01 = scan.nextInt();
if(num % 2==0 || num % 5==0) {
System.out.println("제주도 여행");
}else {
System.out.println("울릉도 여행");
}
// "이거나" 는 || , "이되"는 && ,컴터는 ||와 && 가 있으면 && 를 먼저 계산 하므로 괄호를 사용하여 먼저 계산할거를 정해줌
//String result=(num % 2==0)||(num % 5==0)?"제주도 여행":"울릉도 여행" ------> 길이가 길때는 변수에 저장해서 출력한다.
//System.out.println(result);
// 문6. 숫자를 입력 받아서 숫자가 2의 배수이거나 3의 배수이되 6의 배수는 아닌 것
//Scanner scan=new Scanner (System.in);
System.out.println("숫자를 입력하시오02");
int num02 = scan.nextInt();
19
if(num02 % 2==0 || num02 % 3==0 && !(num02%6==0)) {
//boolean(result01= (num02 % 2==0) || (num02 % 3==0) && num02%6!==0? true:false)------>삼항 연산자 적용해서 풀기
System.out.println("true");
}else {System.out.println("false");
}
//문7. 연도를 입력 받아서 윤년인지 아닌지 판별하기(연도가 4로 나누어 떨어지거나 100으로는 나누어 떨어지지 않고, 400으로는 나누어 떨어지는 해)
//Scanner scan=new Scanner (System.in);
System.out.println("년도를 입력하시오");
int num03 = scan.nextInt();
if(num03 % 4==0 || !(num03 % 100==0) && num03 %400==0 ) {
System.out.println("윤년");
}else {
System.out.println("윤년 아님");
}
//문8. 24보다(num) 크면서 가장 가까운 10의 배수에서 24를(num) 뺀 나머지를 구하시오. int num=24; 를 활용
Scanner scan=new Scanner (System.in);
System.out.println("숫자를 입력하시오04");
int num04 = scan.nextInt();
int num05=24;
if(24<num04) {
System.out.println((((num04/10)+1)*10)-num05);
}else {
System.out.println("24이상 숫자를 입력하세요");
}*/
//문9. 4자리 숫자를 입력받아서 각 자릿수를 더한 합을 구하시오.
Scanner scan=new Scanner (System.in);
System.out.println("숫자를 입력하시오");
int num06 = scan.nextInt();
/*int num06 = scan.nextInt();
int num07=num06%10;
num06=num06/10;
int num08=num06%10;
num06=num06/10;
int num09=num06%10;
num06=num06/10;
int num10=num06%10;
System.out.println(num07+num08+num09+num10); 풀이1*/
int sum=0;
int num07=0;
int num08=num06%10;
for(int i=0;i<4;i++) { //풀이 2
num06=num06/10;
num07=num06%10;
sum=sum+num07;
}
System.out.println(sum+num08);
}
}