[JAVA]6일차(주석/삼항연산자/조건문 if/if 오름차순 정렬/윤년, 평년 판별)

7월21일(수)

오늘은 강사님이 마사지하는 법을 알려주심
어깨랑 목 안그래도 아팠는데 어찌아시고..
완전꿀팁💡
-> 엄지손가락을 접었을 때 뾰족한 부분을 쇄골안에 넣고 어깨 주물주물하면 손에 힘안들이고 시원하게 주무를수 있다. 진짜 시원 ㅋㅋ
그리고 눈침침하다고 화면 어둡게하면 눈에 더 안좋다고한다!

test028~Test033


◼ /**/ 주석 사용

  • /**/ 주석은 중첩해서 쓸 수 없음!!
  • // 주석은 상관없음!

◼ 삼항연산자(두개 이상도 가능)

  • 삼항연산자란?
    -> a?b:c -> a가 참이면 b, 거짓이면 C
  • 삼항연산자에 조건을 계속 추가할 수 있음
    ->
Test028
strResult = (n>0) ? "양수" : ((n<0) ? ("음수") : ("영"));
              /*
              n이 0보다 크다 -> true -> n은 양수
                             -> false -> n이 보다 작다 -> true -> n은 음수
                                                       -> false -> n은 영
              */

▪ 윤년, 평년 판별(삼항연산자 이용)

※ 윤년의 판별 조건 ※
연도가 4의 배수이면서 100의 배수가 아니거나 400의 배수이면 윤년 ~!! 그렇지 않으면 평년~!!

  • 하나의 공간에 두개이상의 조건이 오면 무조건 논리연산(&&, ||, !)이 와야함!!
Test028
strResult = (year%4==0) && (year%100!=0) || (year%400==) ? "윤년" : "평년";

5. 실행흐름의 컨트롤

◼ 제어문⊂조건문(=분기문) : if, switch

▪ if문과 if~else문

if(조건식)
{
 //조건식이 참이면 실행되는 영역
}
//조건식이 거짓이면 실행되는 영역
  • 혼자서 쓰이는 if는 있지만 혼자서 쓰이는 else는 없다.
  • if 는 중첩해서 사용가능 (하고싶은만큼 중첩 가능)
  • 모든문장으 else로 끝나야 하는 것 아님 else if로도 끝날 수 있음
    - But! if 문의 조건에 안들어가는 경우, 선언 안하고 출력하라니까 에러날 수 밖에 없기 때문에 초기값을 선언하자!

▪ if 이용해서 등급 구하기!

/*
90점 ~ 100점 : A
80점 ~ 89 : B
70점 ~ 79점 : C
60점 ~ 69점 : D
60점 미만 : F

단, BufferedReader를  활용하여 데이터를 입력받을 수 있도록 하며,
printf()메소드를 통해 출력할 수 있도록 구현한다.

실행예)
이름 입력 :  정효진
국어 점수 : 90
영어 점수 : 80
수학 점수 : 70

>> 당신의 이름은 정효진입니다.
>> 국어 점수는 90,
>> 영어 점수는 80,
>> 수학 점수는 70,
>> 총점은 240이고, 평균은 80입니다.
>>등급은 B입니다.
계속하려면 아무 키나 누르세요...
*/

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class Test029
{
	public static void main(String[] args) throws IOException
	{
   		String strName;
        	char grade='F'; //--check~!! 
            //grade 값을 if안에 조건에 안들어가는 경우, 선언 안하고 출력하라니까 에러날 수 밖에 없음!
            	int kor, eng, mat;
                int sum;
		double avg;
        
      	    // (... 중간코드 생략...)
            //등급 정하기
            if(avg<=200)
            {
            	if(avg>=90 && avg<=100)
                {
                	grade = 'A';
                }else if(avg>=80)
                {
                	grade = 'B'; //어차피 90미만인 애들만 내려오기로 했으니까 (avg>80)만 써도됨!!
                }else if(avg>=70)
                {
                	grade = 'C';               
                }else if(avg>=60)
                {
                	grade = 'D';
                }else
                {
                	grade = 'F';
                }
            }
            //결과 출력
            //(...생략...)
            System.out.println(">> 등급은 " + grade + "입니다.");
            System.out.printf("\n>> 등급은 %c 입니다.",grade);  
           
    }
}

▪ if 이용해서 0, 짝수, 홀수 구분

//이 코드의 핵심은 0을 제일 처음에 걸러내는 것이 제일 중요!!!---check~!!
//짝수 거를때도 0이 있기 때문!
//Test030
int n;
String strResult = "판별불가"; //초기화!!

if(n==0)
{
	strResult = "영";
}else if(n%2==0)
{
	strResult = "짝수";
}else if(n%2!=0)
{
	strResult = "홀수";
}

👩‍💻퀴즈 위에 윤년, 평년 구하는 것을 삼항연산자가 아닌 if를 이용해서 코드를 작성하시오.

//연도가 4의 배수이면서 100의 배수가 아니거나 400의 배수이면 윤년 ~!! 그렇지 않으면 평년~!!

//Test031
//주요 변수 선언
int year;
String result = "다시 입력"; //--->초기화
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		
//연산 및 처리
System.out.print("임의의 연도 입력 : ");
year = Integer.parseInt(br.readLine());

/* 방법 1
//연도가 4의 배수이면서 100의 배수가 아니거나 400의 배수이면 윤년 ~!! 그렇지 않으면 평년~!!
if(year%4==0 && year%100!=0 || year%400==0)
	result = "윤년";
else
	result = "평년";
*/

// 방법 2
if(year%4==0) //-----------4의 배수 확인
{
	if(year%100!=0) //------4의 배수 중 100의 배수가 아닌 것 윤년
		result = "윤년";
	else if(year%400==0) //-4의 배수 중 100의 배수인 것 윤년 
		result = "윤년";

}else
{
	result = "평년"; //-----연도가 4의 배수가 아니고 아닌 것 평년
}
		

//출력 결과
System.out.printf("%d년 -> %s\n", year, result);

/*
임의의 연도 입력 : 2021
2021년 -> 평년
계속하려면 아무 키나 누르십시오 . . .

임의의 연도 입력 : 2020
2020년 -> 윤년
계속하려면 아무 키나 누르십시오 . . .

임의의 연도 입력 : 2012
2012년 -> 윤년
계속하려면 아무 키나 누르십시오 . . .
*/

▪ if 이용해서 연산자 입력받기

//Test032
/*
실행 예)
첫 번째 정수 입력 : 20
두 번째 정수 입력 : 14
연산자 입력[+ - * /] : +

>> 20 + 14 = 34
계속하려면 아무 키나 누르세요...
*/

int num1, num2, result = 0;
char op;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.out.print("첫 번째 정수 입력 : ");
num1 = Integer.parseInt(br.readLine());
System.out.print("두 번째 정수 입력 : ");
num2 = Integer.parseInt(br.readLine());

System.out.print("연산자 입력[+ - * /] : ");
op = (char)System.in.read(); //----check~!!!!!point~!!!

if(op == '+')
	result = num1 + num2;
else if(op == '-')
	result = num1 - num2;
else if(op == '*')
	result = num1 * num2;
else if(op == '/')
	result = num1 / num2;
    
System.out.printf("\n>> %d %c %d = %d\n", num1, op, num2, result);

▪ if 이용해서작은 수에서 큰 수 순으로 출력


//Test033
/*
실행 예)
첫 번째 정수 입력 : 5
두 번째 정수 입력 : 15
세 번재 정수 입력 : 10

>> 정렬 결과 : 5 10 15
계속하려면 아무 키나 누르세요...

*/

// 7 8 2    8 6 13    10 50 30    9 30 45
// ---      ---       -----       ----        첫 번째 두 번째 비교
//          6 8 13
// -   -    -   --	  --    --    -    --     첫 번째 세 번째 비교
// 2 8 7    
//   - -      -  -        -  -       -   -    두 번째 세 번째 비교
// 2 7 8    6 8 13     10 30 50    9 30 45

// if 를 따로따로 만드는 이유는 전부다 수행해야하니까! else아님!!  ---check~!! 
		

//이거 이용해도 되고
a = a^b;
b = b^a;
a = a^b;if(a>b)
{
	a = a^b; 
	b = b^a; 
	a = a^b;
}
if(b>c)
{
	b = b^c; 
	c = c^b; 
	b = b^c;
}

if(a>b)
{
	a = a^b; 
	b = b^a; 
	a = a^b;
}
//이거 이용해도 됨
temp = a;
a = b;
b = temp;

//아니면 a,b,c 부등호로 다 비교해도 됨
//헷갈려...

열심히 복습하자!🌱

좋은 웹페이지 즐겨찾기