JAVA-04

이강민·2022년 3월 18일
0

웹 개발반 - JAVA

목록 보기
4/19
post-thumbnail

JAVA - 04

Java의 연산자

최 : 최우선 연산자 / ( ), .
단 : 단항 연산자 / !, ~, 형변환 연산자
산 : 산술 연산자 / + - * /
쉬 : 쉬프트 연산자 / >>, <<
관 : 관계 연산자 / > < >= <=
리 : 논리 연산자 / &&(and, 논리곱), ||(or, 논리합)
삼 : 삼항 연산자 / 조건식 ? 참 : 거짓
대 : 대입 연산자 =

삼항연산자

(조건문) ? (참) : (거짓)
삼항 연산자는 사용부분 통째로 값
경우의 수가 두 가지일 때 사용하는 것이 좋다.
너무 많으면 통제하기 어려움

package Day04My;

import java.util.Scanner;

public class day04My {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String answer = "";
		String result = "";
		System.out.println("우리크라이나 전쟁이 정당하다고 생각하십니까?(네, 아니요) : ");
		answer = sc.next();
		result = answer.equals("네") ? "당신은 공산당원이네요" : (answer.equals("아니요") ? "당신은 민주주의를 선호합니다." : "다른거 입력하지 마세요"); 
		System.out.println(result);
	}
}
  • 문자열을 비교하려면 equals메소드를 이용해야 한다.
  • 위 예시처럼 중첩으로 사용가능하지만 가독성이 떨어지고 경우의 수가 2가지 이상일 경우는 '조건문'을 사용하느 것이 좋다.

제어문

  • 위에서 아래로만 흐르던 코드의 흐름을 제어하기 위해 사용하는 문장
  1. 조건문(선택제어문)
    • if, else if, else
    • switch, case, default
  2. 반복문(반복제어문)
    • while
    • for

조건문

  • 조건에 따라 경우의 수를 나눌 때
  • 흐름을 나누어 줄 때
  • 선택지를 주어줄 때
  • 특정한 상태를 물어볼 때

if문

  • 형태
if(조건식1){
		조건식1의 연산 결과가 true 값일 때 실행		
	}
	else if(조건식2){
		조건식1의 연산 결과가 false일 때
		조건식2의 연산 결과가 true이면 실 행	
	}
	else{
		위의 조건식들이 모두 false일 때 실행		
	}
package Day04My;

import java.util.Scanner;

public class Quiz {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int result =0;
		System.out.println("다음 중 프로그래밍 언어가 아닌 것은?");
		System.out.println("1. JAVA\n2. Javascript\n3. HTML\n4. python\n");
		System.out.println("-----------------\n나가기는 0번을 눌러주세요");
		result = sc.nextInt();
		if(result == 3) {
			System.out.println("정답입니다.");
		}else if(result == 1 || result == 2 || result == 4) {
			System.out.println("오답입니다.");
		}else {
			System.out.println("잘못입력하셨습니다.");
		}
	}
}
  • 위 프로그램에서의 문제는 아무거나 입력해도 프로그램이 종료된다.
  • 위와 같은 문제를 막기위해 while문이 필요하다. while문은 후반부에 다루자
  • 반복되는 조건문으로 인하여 코드의 가독성을 떨어트린다. 위 처럼 조건문이 반복되는 문장은 switch로 쓰는 것이 더 유리하다.

switch문

  • 경우의 수가 변수의 값의 등가 비교로 인해 나뉠 때 사용
  • 변수에 담긴 값에 따라 알맞은 case로 이동하고 문장을 실행한다.
  • 하지만 그 밑에 case가 더 있다면 그 안에 있는 문장들도 실행한다.
  • 따라서 각 케이스들을 나누어 주려면 알맞게 break;를 사용한다.
package Day04My;

import java.util.Scanner;

public class Quiz2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int result = 0;
		System.out.println("다음 중 프로그래밍 언어가 아닌 것은?");
		System.out.println("1. JAVA\n2. Javascript\n3. HTML\n4. python\n");
		System.out.println("-----------------\n나가기는 0번을 눌러주세요");
		result = sc.nextInt();
		switch (result) {
		case 3:
			System.out.println("정답이유");
			break;
		case 1:
		case 2:
		case 4:
			System.out.println("오답이에요");
			break;
		default:
			break;
		}
	}
}
  • 위와 같이 출력이 같은 문장은 생략이 가능하다.
  • break;를 작성하지 않으면 아래 문장들이 모두 실행된다.

반복문

  • 특정한 코드나 행위를 반복해야 할 때 사용하는 문장
  1. 조건에 의한 반복문 : while, do while,
  2. 횟수에 의한 반복문 : for

while문

  • 조건에 의한 반복문
while(조건식){
		조건식의 연산결과가 true일 동안 반복할 문장	
	}

정답과 나가기 기능을 제외한 오답 일 경우 문제를 반복시키는 코드로 만들어 보자

package Day04My;

import java.util.Scanner;

public class Quiz3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int result = 0;
		System.out.println("다음 중 프로그래밍 언어가 아닌 것은?");
		System.out.println("1. JAVA\n2. Javascript\n3. HTML\n4. python\n");
		System.out.println("-----------------\n나가기는 0번을 눌러주세요");
		while(result != 3) {
			result = sc.nextInt();
			if(result == 3) {
				System.out.println("정답입니다.");
				//flag = false;
			}else if(result == 1 || result == 2 || result == 4) {
				System.out.println("오답입니다.");
			}else {
				if(result == 0) {
					System.out.println("안녕히 가세여");
					break;
				}else {
					System.out.println("다른거 누르지 마라");					
				}
			}
		}
	}
}
  • if 중첩문을 없애고 0일 경우 반복문을 끝내려고 보니 이미 위에서 0으로 초기화 하고 있어서 애초에 실행되지 않는다.
    이 때 기존의 선언된 변수로 인한 문제를 해결하기 위해 do while문을 쓴다.

do ~ while문

  • while문과 동일하지만 무조건 한번은 실행한다
	do{
		조건식의 연산결과가 true일 동안 반복할 문장.
	}while(조건식);
package Day04My;

import java.util.Scanner;

public class Quiz3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int result = 0;
		System.out.println("다음 중 프로그래밍 언어가 아닌 것은?");
		System.out.println("1. JAVA\n2. Javascript\n3. HTML\n4. python\n");
		System.out.println("-----------------\n나가기는 0번을 눌러주세요");
		
		do {
			result = sc.nextInt();
			if(result == 3) {
				System.out.println("정답입니다.");
				break;
			}else if(result == 1 || result == 2 || result == 4) {
				System.out.println("오답입니다.");
			}else if(result == 0) {
				System.out.println("안녕히 가쇼");
			}else {
				System.out.println("다른거 누르지 마라");						
			}
		}while(result != 0);
	}
}

무한 반복 while

  • while문 뒤의 ()안에는 조건식, 즉 boolean 타입의 값이 와야한다.
    따라서 그 안에 true라는 값을 넣을 수가 있고 그 값은 상수로 작성했기 때문에
    변하지 않는다. 따라서 그 while문은 무한정으로 반복한다.
    내부에서 특정한 조건일때를 if문으로 만들고 break를 통해 탈출할수 있도록 탈출구 하나 이상을 만들어야한다.
while(true){
		
	}
package Day04My;

import java.util.Scanner;

public class Quiz3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int result = 0;
		System.out.println("다음 중 프로그래밍 언어가 아닌 것은?");
		System.out.println("1. JAVA\n2. Javascript\n3. HTML\n4. python\n");
		System.out.println("-----------------\n나가기는 0번을 눌러주세요");
		

		
		while(true) {
			result = sc.nextInt();
			if(result == 3) {
				System.out.println("정답입니다.");
				break;
			}else if(result == 1 || result == 2 || result == 4) {
				System.out.println("오답입니다.");
			}else if(result == 0) {
				System.out.println("안녕히 가쇼");
				break;
			}else {
				System.out.println("다른거 누르지 마라");						
			}
		}
	}
}

정답과 나가기 번호에 break를 사용하여 반복문을 탈출했다!

profile
배움은 끝없이

0개의 댓글