본문 바로가기
학습/IT

[IT] Java기초(5) - 연산자 제어문, 반복문 실습

by 개성공장 2021. 11. 19.
반응형

□ 연산자 제어문
 * 프로그래밍 작성 순서
 - 프로그램이 실행되는데 필요한 데이터를 파악한다.
 - 프로그램의 흐름(로직)을 정리한다.

 * 변수판단의 기준
 - 사용자의 입력이 필요하면 무조건 변수로
 - 흐름상에서 연산의 결과가 발생하면 변수로

 * 홀짝 게임 만들기
 - 흐름 : 컴퓨터가 어떤 숫자를 만듬 -> 사용자가 그 숫자를 맞춤(입력) -> 결과(true/false)
 - 데이터 로직 : 컴퓨터가 생성하는 숫자(value), 사용자가 입력하는 숫자(input), %연산 결과값(odd), 분기(if)
 - 유의 : 성공하는 것만 생각!!!

 

---

public static void main(String[] args) {

	// 컴퓨터의 숫자발생
	int value = (int)(Math.random() * 100);
	System.out.println("debug : " + value);

	System.out.println("짝수일까요? 홀수일까요? 홀이면 1, 짝이면 0");

	Scanner scanner = new Scanner(System.in);
	int input = scanner.nextInt();   // 사용자 입력

	int odd = value %2;   // 결과

	if(odd == input){
		System.out.println("맞아요....");
	} else {
		System.out.println("바보 ㅋㅋ");
	}
}


---

 

연못

 


 * 가위, 바위, 보 게임 만들기
 - 0 : "가위", 1 : "바위", 2 : "보" / COM, USER
 - 0, 0 : draw, 0, 1 : user win, 0, 2 : user lose
 - 1, 1 : draw, 1, 0 : user lose, 1, 2 : user win
 - 2, 2 : draw, 2, 0 : user win, 2, 1 : user lose

 - draw : 0,0 / 1,1 / 2,2          : 0             =>  0
 - user win : 0,1 / 1,2 / 2,0      : 1, 1, -2     =>  1
 - user lose : 0,2 / 1,0 / 2,1     : 2, -1, -1    =>  2

 - user < com 이면 user = user +3 하고, com-user를 했을 때, 1이면 user win, 2이면 user lose, 0 이면 draw

---

public static void main(String[] args) {
	// 컴퓨터의 숫자발생
	int value = (int)(Math.random() * 100);
	int com = value%3;

	Scanner scanner = new Scanner(System.in);

	System.out.println("debug : " + value);
	System.out.println("가위 0, 바위 1, 보 2 ~~~");

	int user = scanner();

	if(user<com) {
		user = user + 3;
	}

	int result = user - com;

	switch (result) {
		case 1:
			System.out.println("YOU WIN");
   		  break;
		case 2:
			System.out.println("YOU LOSE");
   		  break;

		default :
			System.out.println("DRAW");
   		  break;
	}
}


---

 

오리들

 

 반복문
 * 데이터, 연산 그 다음은? 
 - 데이터와 연산을 이용해 원하는 기능을 만들었다면 그 다음은 반복문!!
 - 루프(반복, 순환문)

 * 루프(loop)의 원리
 - 메모리상에서 goto를 이용해서 다시 지정된 위치로 점프
 - 실제로 JVM 코드상에서도 goto를 이용

 * 루프의 종류
 - counted loop : 정해진 수 만큼 순환하는 루프 => for 루프
 - uncounted loop : 알 수 없는 수 만큼 순환하는 루프 => while 루프
 - for, while, do ~ while

 * for 루프
 - "시작조건, 검사조건, 후 처리" 로 구성
 - 시작조건 : 한 번만 실행, 루프 안에서'만' 사용하는 변수를 선언할 때 사용
 - 검사조건 : boolean 검사
 - 후 처리 : 일반적으로 증감 조건

---

  //시작구문, 검사구문, 증감구문
for ( int i =0;  i < 10;  i++) {
	System.out.println(i);
}

---
 => 결과값 : 0 1 2 3 4 5 6 7 8 9 10



 * 루프의 중단과 건너뛰기
 - 중단 : break
 - 건너뛰기 : continue

 * while 루프
 - 대표적인 uncounted loop
 - 이벤트 루프
 - 가장 많이 쓰이는 형태 : while(true) { ... }

 * do ~ while 루프
 - 한번 무조건 실행한 후에 조건을 검사하는 경우에만 사용
 - 우선 실행이라는 장점
 - 검사조건이 마지막에 있어서 가독성이 떨어지는 단점이 있음

---

do {
	value++;
	System.out.println("run");
} while(value<100);

---

 

꽃들

 

 반복문 실습
 * 반복적으로 필요한 작업들?
 - 단순한 게임들
 - 결과가 누적되는 작업들

 * 간단한 계산기 만들기
 - 루프와 입력, switch를 이용
 - 처음 결과값은 0
 - add, subtract, multiply, devide
 - 일단 처음에는 루프 없이 코드 작성

--- 

public static void main(String[] args) {

	Scanner scanner = new Scanner(System.in);

	double current = 0;

	outer:
	while(true) {

		System.out.println("ANSWER : " + current);

		System.out.println("add, min, mul, div, exit");
		String oper = scanner.nextLine();

		/*  if(oper.equals("exit")){
			break;
		}  */ 반복문 break하는 방법 1

		System.out.println("Input number");
		double value = Double.parseDouble(scanner.nextLine());

		switch(oper) {
		case "add":
			current = current + value;
			break;
		case "min":
			current = current - value;
		case "mul":
			current = current * value;
		case "div":
			current = current / value;
		case "exit":
			break outer;
		default:
			break;
		}
	}
}

---

 - 키보드의 엔터까지 인식하기 위해서는 scanner.nextLine();가 필요
 - 문자열 비교는 equals 기능을 이용
 - 라벨을 이용한 반복문 break 방법

반응형

댓글