□ 연산자 제어문
* 프로그래밍 작성 순서
- 프로그램이 실행되는데 필요한 데이터를 파악한다.
- 프로그램의 흐름(로직)을 정리한다.
* 변수판단의 기준
- 사용자의 입력이 필요하면 무조건 변수로
- 흐름상에서 연산의 결과가 발생하면 변수로
* 홀짝 게임 만들기
- 흐름 : 컴퓨터가 어떤 숫자를 만듬 -> 사용자가 그 숫자를 맞춤(입력) -> 결과(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 방법
'학습 > IT' 카테고리의 다른 글
[IT] Java기초(7) - 함수(Function), 계산기 예제 코딩해보기 (0) | 2021.12.02 |
---|---|
[IT] Java기초(6) - 함수(Function), 주사위 함수 정의하기 (0) | 2021.11.23 |
[IT] Java기초(3) - 변수(variable), 데이터의 크기와 종류, 캐스팅 (0) | 2021.11.09 |
[IT] Java기초(2) - Eclipse에서 Hello, World 코드 실행해보기 (0) | 2021.11.03 |
[IT] Java기초(1) - 자바란 무엇인가? 공부계획 세우기 (0) | 2021.10.31 |
댓글