*제어문
1) 조건문 (if, switch) - 특정 조건 만족 시 코드 실행
2) 반복문 (while, do~while, for, 향상된 for) - 코드 반복 실행
3) 탈출문 (break, continue, return) - 반복문 실행 중 중지
> 조건문
1. if ~ else
if (조건식) { } else { }
조건식 결과는 반드시 boolean형
조건식 결과 true → if 블록 , false → else블록 실행
만약 결과가 false 일 때 실행할 문장이 없으면 else 생략 가능 (if문은 else문 없이 사용 가능, else문은 if문 없이 단독 사용 불가)
// 0~100 사이의 점수를 랜덤으로 받아, 70점 이상은 합격, 70점 미만은 불합격
int a = (int)(Math.random()*101);
System.out.println("점수:" + a); //점수: a
if (a >= 70) {
System.out.println("70점 이상입니다. 합격."); //a가 70 이상이면 출력
} else {
System.out.println("70점 미만입니다. 불합격."); //a가 70 미만이면 출력
}
2. if ~ else if ~ else
if (조건식) { } else if (조건식) { } else { }
조건을 여러 개 설정하기 위해 사용
조건을 위에서부터 차례대로 검색하며 내려가므로 조건식 설정에 유의
//0~100 사이의 점수를 입력받아 구간에 따른 학점 출력
Scanner scan = new Scanner(System.in);
System.out.print("점수>");
int a = scan.nextInt(); //점수> a
//구간에 따른 학점
if(a >= 90) {
System.out.println("A학점"); //a가 90 이상이면 출력
} else if(a >= 80) {
System.out.println("B학점"); //a가 80이상 (90미만) 이면 출력
} else if(a >= 70) {
System.out.println("C학점"); //a가 70이상 (80미만) 이면 출력
} else if(a >= 60) {
System.out.println("D학점"); //a가 60이상 (70미만) 이면 출력
} else {
System.out.println("F학점"); //a가 60 미만이면 출력
}
// if나 else if에서 실행하고 나면 더 내려가지 않고 종료
3. switch ~ case
switch(판단조건) { case 값: 실행문 case 값: 실행문 ... default : 실행문 }
- 판단조건: 값을 갖는 변수, 표현식 (if문과 달리 조건식X)
datatype: int, String, enum (정수O, 문자열O, 실수X)
- case문 뒤의 값은 반드시 상수 (변수X), 위의 판단조건과 대응되는 datatype
- default는 if ~ else 의 else와 비슷한 역할
- 조건은 위에서부터 아래로 차례대로 검색
- break; 가 없으면 조건을 만족하는 case부터 마지막 case까지 모두 실행
break; 를 써줌으로써 해당 case까지만 실행하고 종료할 수 있음
int a = 1;
switch(a) {
case 0:
System.out.println("0 입니다."); //만족X
break;
case 1:
System.out.println("1 입니다."); //만족O
case 2:
System.out.println("2 입니다.");
break; //종료
default:
System.out.println("0, 1, 2가 아닙니다.");
break;
}
// 1 입니다.
// 2 입니다.
int a = 1;
switch(a) {
case 0:
System.out.println("0 입니다."); //만족X
break;
case 1:
System.out.println("1 입니다."); //만족O
break; //종료
case 2:
System.out.println("2 입니다.");
break;
default:
System.out.println("0, 1, 2가 아닙니다.");
break;
}
// 1 입니다
*명령행 인자 args - 외부(운영체제)에서 값을 전달받을 때 사용하는 매개변수
이클립스에서 운영체제를 통해 값을 전달받는 방법: run - run configuration - class 선택 - argument 탭 - program arguments 에 ${string_prompt}
-명령행 인자 값에 *(곱셈 연산자) 사용하면 인식 오류 발생 (운영체제에서 임의의 문자열 표현하는 메타문자 *와 겹치기 때문)
*String → int 치환
Integer.parseInt(문자열이름)
단, String 변수 값은 반드시 숫자 형태
String str = "2002";
int year = Integer.parseInt(str);
//year에 정수 2002 할당됨
> 반복문
1. while
while(조건식) { 실행문 }
조건식 만족하는 동안 반복문 실행
조건식 (boolean형) true → 실행문 반복 , false → 반복문 종료
*조건식 자체가 true 인 경우 - 반복문이 무한루프, 탈출문 필요
제어변수: 반복 횟수를 제어하는 변수 (while 밖에서 선언, 반복을 멈추고 싶을 때 조건 결과가 false가 되도록, 반복문 안에서 조작)
// 1부터 10까지 합
int a = 1; //제어변수
int sum = 0;
while(a <= 0) { //조건식
sum += a; //sum = sum + a;
a++; //제어변수
}
System.out.println(sum);
// 55
// 1~10까지 임의의 자연수, 소수인지 판별
int num = (int)(Math.random() * 10) + 1;
System.out.println(num);
int i = 2;
while(num % i != 0) { //수가 i로 나누어떨어지면 반복 종료
i++; //i는 증가해가면서 num을 나눈다
}
Systme.out.println(num == i ? "소수입니다." : "소수가 아닙니다."); //3항 연산자
//소수라면 i==num이 되어서야 반복문 종료, 소수가 아니라면 그 전에 반복문 종료
조건식 검사 → 실행문 반복 이므로 처음 조건이 false이면 단 한번도 실행되지 않음
2. do ~ while
do 이하 구문 한 번 실행 → 조건식 검사 이므로 결과에 무관하게 무조건 한 번은 실행
do { 실행문 } while(조건식);
일단 실행문 실행, 이후 조건식 검사하며 실행문 반복
// 1부터 10까지 합
int i = 1;
int sum = 0;
do {
sum += i; //sum = sum + i;
i++
} while(i <= 10);
System.out.println(sum);
//55 //sum=1, i=2 -> 조건확인, 반복 -> sum=1+...+10, i=11, 조건확인, 종료
3. for
for(초기화식; 조건식; 증감식) { 실행문 }
제어 조건을 한번에 지정
조건식(boolean형) true→반복, false→종료
증감식에 따라 조건식이 false가 되어 반복문이 종료됨
반복 횟수를 알고 있을 때 유용
실행문이 한 줄이면 블록{ } 생략 가능
// 1부터 10까지 합
int sum = 0;
for(int i = 1; i <= 10; i++) { //i는 1부터 10까지 1씩 증가
sum += i; //sum = sum + i;
}
System.out.println(sum);
//55
// 1~10까지 임의의 자연수, 소수인지 판별
int num = (int)(Math.random() * 10) + 1;
System.out.println(num);
int count = 0;
for(int i = 1; i <= num; i++) {
if(num % i == 0) {
count++;
}
}
System.out.println(count == 2? "소수입니다." : "소수가 아닙니다.");
//1~200 정수 중 짝수만 출력
for(int i = 1; i <= 200; i+=2) {
System.out.println(i + " ");
}
//A~Z 문자를 가로로 출력 (A=65, Z=90)
for(char c = 'A'; c <= 'Z'; c++) {
System.out.print(c + " ");
}
4. 향상된 for 루프 (Enhanced for loop)
for(배열의 값을 저장할 변수 : 배열이름) { 실행문 }
배열의 원소가 처음부터 끝까지 차례대로 변수에 저장되며 실행문 반복 - 배열의 끝까지 수행 후 반복문 종료
배열/컬렉션의 모든 원소들에 대한 반복 작업을 쉽게 처리
int[] arr = {1, 2, 3, 4, 5};
for(int a : arr) {
System.out.println(a);
}
// 1
// 2
// 3
// 4
// 5
//그냥 for문으로 작성하면 다음과 같음
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
String[] arr = {"월", "화", "수", "목", "금"};
for(String str : arr) {
System.out.println(str + "요일");
}
// 월요일
// 화요일
// 수요일
// 목요일
// 금요일
// 배열에 저장된 원소들의 합계, 평균 구하기
int[] arr = {10, 20, 30, 40, 54};
int sum = 0;
for(int a : arr) {
sum += a; //sum = sum + a;
}
System.out.println(sum); //합계 154
double avg = (double)sum / arr.length; //double형으로 연산하기 위함
System.out.println(avg); //평균 30.8
* 중첩 for문
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <=9; j++) {
System.out.println(i + "-" + j);
}
}
// 1-1
// 1-2
// 1-3
// 1-4
// 1-5
// 1-6
// 1-7
// 1-8
// 1-9
// 2-1
// ...
// 9-9
//이를 응용하여 구구단 출력하기
for(int i = 2; i <= 9; i++) {
System.out.println("구구단" + i + "단");
for(int j = 1; j <= 9; j++) {
System.out.println(i + "x" + j + "=" + i*j);
}
}
// 구구단2단
// 2x1=2
// 2x2=4
// ...
// 9x9=81
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.println(i + "-" + j);
}
}
// 1-1
// 2-1
// 2-2
// 3-1
// 3-2
// 3-3
// 4-1
// ...
// 9-9
> 탈출문
프로그램의 실행 순서를 지정된 곳으로 이동시키는 문장
반복문/블록구조에서 빠져나오기 위해 사용
키워드 - break, continue, return (goto는 자바의 키워드에 포함은 되어 있지만 사용X)
1. break
반복문 내 어떤 곳이든 위치 가능
실행 도중 break 만나면 곧바로 반복문 종료
*무한 반복문 ex. while(true) - 반복 횟수를 정확히 모를 때 사용, 특정 조건에서 종료하도록 함
int i = 0;
while(true) {
System.out.println(i);
if(i == 15) break; // 이 줄이 없으면 무한 반복, 끝나지 않음
i++;
}
// 0
// 1
// 2
// ...
// 15
// 정답을 입력할 때까지 답을 묻기
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("4 + 3 = ?");
System.out.print(">");
int answer = scan.nextInt();
if(answer == 7) {
System.out.println("정답");
break;
} else {
System.out.println("오답");
}
// 4 + 3 = ?
// >(8입력)
// 오답
// 4 + 3 =?
// >(7입력)
// 정답 //끝
2. continue
반복문 내 어떤 곳이든 위치 가능
continue를 만나면 이후 실행문은 건너뛰고, 반복문의 맨 처음(증감식/조건식)으로 이동
// for문에서의 예시
for(int i = 1; i <= 5; i++) {
if(i == 3) continue; //특정 조건에서 continue (i=3이면 아래 출력문 실행 않고 반복문 처음 증감식으로 이동)
System.out.println(i);
}
// 1
// 2
// 4
// 5
// while문에서의 예시
int i = 1;
while(i <= 5) {
if(i == 3) {
i++;
continue; //i=3이면 1증가시켜 i=4, 아래 출력문 실행 않고 반복문 처음(조건식)으로 이동
}
System.out.println(i);
i++;
}
// 1
// 2
// 4
// 5
//만약 아래와 같이 코드를 작성하면, 무한 반복문이 됨
int i = 1;
while(i <= 5) {
System.out.println(i); //1, 2, 3 출력 후
if(i == 3) continue; //여기 조건식에 걸려 반복문 처음으로 이동하지만 i는 증가하지 않고 계속 3이므로 무한 반복
i++;
}
// 1
// 2
// 3
// 3
// 3
// 3
// ...
// continue를 사용함으로써 프로그램을 더 효율적으로 작동시킬 수 있음
// 다음은 정수를 입력받아 그 수까지의 소수의 개수를 출력하는 코드이다
//continue 사용 전 코드
Scanner scan = new Scanner(System.in);
System.out.print("정수입력>");
int num = scan.nextInt();
int sum = 0; //소수의 개수 변수
for(int i = 1; i <= num; i++) {
int count = 0; //약수의 개수 변수
for(int j = 1; j <= i; j++) {
if(i % j == 0) count++;
}
if(count == 2) sum++;
}
System.out.println(sum);
//continue 사용한 코드
Scanner scan = new Scanner(System.in);
System.out.print("정수입력>");
int num = scan.nextInt();
int sum = 0; //소수의 개수 변수
ex:for(int i = 1; i <= num; i++) { //반복문의 이름을 정해준다 "이름:반복문"
int count = 0; //약수의 개수 변수
for(int j = 1; j <= i; j++) {
if(i % j == 0) count++;
if(count >= 3) continue ex; //count가 3이상이면 더이상 소수가 아니므로 중단
}
if(count == 2) sum++;
}
System.out.println(sum);
//프로그램의 작동 시간이 단축됨
*원하는 반복문 탈출하기
탈출문은 기본적으로 해당 탈출문이 속한 반복문만 빠져나온다 (중첩 반복문의 경우, 내부 반복문에서 탈출문을 사용했다면 내부 반복문만 탈출)
따라서 원하는 반복문에서 탈출하기 위해서는 반복문에 이름을 붙이고(이름: 반복문) 해당 반복문을 탈출하도록 입력한다(break 반복문이름;)
//구구단 1단부터 9단까지 출력
int i = 1;
Loop1: while(true) { //반복문 이름 설정
int j = 1;
while(j < 10) {
if(i == 10) break Loop1; //해당 조건에 바깥 반복문까지 빠져나옴
System.out.println(i + "*" + j + "=" + i*j);
j++;
}
i++;
}
3. return
*flag
프로그램이 작동되는 상태를 표시하기 위해 사용하는 변수
언제 어떻게 쓸 지는 코드를 작성하는 사람이 결정한다
예)flag를 boolean형 변수로 선언, false 저장
특정 조건이 만족할 때 flag에 ture를 저장, 조건식에 flag를 넣어 결과를 true로 만들고 원하는 동작을 실행
ex. break 대신 사용하기
Scanner scan = new Scanner(System.in);
System.out.print("금액을 투입하세요>");
int money = scan.nextInt();
while(true) { //무한반복문
System.out.println("\n남은금액: " + money + "원");
System.out.println("[1]밀키스:400원, [2]코카콜라:500원, [3]잔돈받기");
System.out.print(">");
int menu = scan.nextInt();
boolean flag = false; //flag 선언 후 false 저장
switch (menu) {
case 1:
if(money >= 400) {
System.out.println("밀키스를 받았습니다");
money -= 400;
} else {
System.out.println("금액이 부족합니다");
}
break;
case 2:
if(money >= 500) {
System.out.println("코카콜라를 받았습니다");
money -= 500;
} else {
System.out.println("금액이 부족합니다");
}
break;
case 3:
System.out.println("남은금액 " + money + "원을 반환합니다");
flag = true; //case3에서 flag에 true 저장
break;
}
if(flag) break; //case3일때(flag=ture이므로) 반복문 while 종료
}
'course 2021 > JAVA' 카테고리의 다른 글
day07 - method (0) | 2021.08.25 |
---|---|
day06 - array insert, update, delete (0) | 2021.08.24 |
day04 - array, scanner (1) | 2021.08.18 |
day03 - operator (0) | 2021.08.15 |
day02 - variable, datatype, type casting (0) | 2021.08.12 |
*제어문
1) 조건문 (if, switch) - 특정 조건 만족 시 코드 실행
2) 반복문 (while, do~while, for, 향상된 for) - 코드 반복 실행
3) 탈출문 (break, continue, return) - 반복문 실행 중 중지
> 조건문
1. if ~ else
if (조건식) { } else { }
조건식 결과는 반드시 boolean형
조건식 결과 true → if 블록 , false → else블록 실행
만약 결과가 false 일 때 실행할 문장이 없으면 else 생략 가능 (if문은 else문 없이 사용 가능, else문은 if문 없이 단독 사용 불가)
// 0~100 사이의 점수를 랜덤으로 받아, 70점 이상은 합격, 70점 미만은 불합격
int a = (int)(Math.random()*101);
System.out.println("점수:" + a); //점수: a
if (a >= 70) {
System.out.println("70점 이상입니다. 합격."); //a가 70 이상이면 출력
} else {
System.out.println("70점 미만입니다. 불합격."); //a가 70 미만이면 출력
}
2. if ~ else if ~ else
if (조건식) { } else if (조건식) { } else { }
조건을 여러 개 설정하기 위해 사용
조건을 위에서부터 차례대로 검색하며 내려가므로 조건식 설정에 유의
//0~100 사이의 점수를 입력받아 구간에 따른 학점 출력
Scanner scan = new Scanner(System.in);
System.out.print("점수>");
int a = scan.nextInt(); //점수> a
//구간에 따른 학점
if(a >= 90) {
System.out.println("A학점"); //a가 90 이상이면 출력
} else if(a >= 80) {
System.out.println("B학점"); //a가 80이상 (90미만) 이면 출력
} else if(a >= 70) {
System.out.println("C학점"); //a가 70이상 (80미만) 이면 출력
} else if(a >= 60) {
System.out.println("D학점"); //a가 60이상 (70미만) 이면 출력
} else {
System.out.println("F학점"); //a가 60 미만이면 출력
}
// if나 else if에서 실행하고 나면 더 내려가지 않고 종료
3. switch ~ case
switch(판단조건) { case 값: 실행문 case 값: 실행문 ... default : 실행문 }
- 판단조건: 값을 갖는 변수, 표현식 (if문과 달리 조건식X)
datatype: int, String, enum (정수O, 문자열O, 실수X)
- case문 뒤의 값은 반드시 상수 (변수X), 위의 판단조건과 대응되는 datatype
- default는 if ~ else 의 else와 비슷한 역할
- 조건은 위에서부터 아래로 차례대로 검색
- break; 가 없으면 조건을 만족하는 case부터 마지막 case까지 모두 실행
break; 를 써줌으로써 해당 case까지만 실행하고 종료할 수 있음
int a = 1;
switch(a) {
case 0:
System.out.println("0 입니다."); //만족X
break;
case 1:
System.out.println("1 입니다."); //만족O
case 2:
System.out.println("2 입니다.");
break; //종료
default:
System.out.println("0, 1, 2가 아닙니다.");
break;
}
// 1 입니다.
// 2 입니다.
int a = 1;
switch(a) {
case 0:
System.out.println("0 입니다."); //만족X
break;
case 1:
System.out.println("1 입니다."); //만족O
break; //종료
case 2:
System.out.println("2 입니다.");
break;
default:
System.out.println("0, 1, 2가 아닙니다.");
break;
}
// 1 입니다
*명령행 인자 args - 외부(운영체제)에서 값을 전달받을 때 사용하는 매개변수
이클립스에서 운영체제를 통해 값을 전달받는 방법: run - run configuration - class 선택 - argument 탭 - program arguments 에 ${string_prompt}
-명령행 인자 값에 *(곱셈 연산자) 사용하면 인식 오류 발생 (운영체제에서 임의의 문자열 표현하는 메타문자 *와 겹치기 때문)
*String → int 치환
Integer.parseInt(문자열이름)
단, String 변수 값은 반드시 숫자 형태
String str = "2002";
int year = Integer.parseInt(str);
//year에 정수 2002 할당됨
> 반복문
1. while
while(조건식) { 실행문 }
조건식 만족하는 동안 반복문 실행
조건식 (boolean형) true → 실행문 반복 , false → 반복문 종료
*조건식 자체가 true 인 경우 - 반복문이 무한루프, 탈출문 필요
제어변수: 반복 횟수를 제어하는 변수 (while 밖에서 선언, 반복을 멈추고 싶을 때 조건 결과가 false가 되도록, 반복문 안에서 조작)
// 1부터 10까지 합
int a = 1; //제어변수
int sum = 0;
while(a <= 0) { //조건식
sum += a; //sum = sum + a;
a++; //제어변수
}
System.out.println(sum);
// 55
// 1~10까지 임의의 자연수, 소수인지 판별
int num = (int)(Math.random() * 10) + 1;
System.out.println(num);
int i = 2;
while(num % i != 0) { //수가 i로 나누어떨어지면 반복 종료
i++; //i는 증가해가면서 num을 나눈다
}
Systme.out.println(num == i ? "소수입니다." : "소수가 아닙니다."); //3항 연산자
//소수라면 i==num이 되어서야 반복문 종료, 소수가 아니라면 그 전에 반복문 종료
조건식 검사 → 실행문 반복 이므로 처음 조건이 false이면 단 한번도 실행되지 않음
2. do ~ while
do 이하 구문 한 번 실행 → 조건식 검사 이므로 결과에 무관하게 무조건 한 번은 실행
do { 실행문 } while(조건식);
일단 실행문 실행, 이후 조건식 검사하며 실행문 반복
// 1부터 10까지 합
int i = 1;
int sum = 0;
do {
sum += i; //sum = sum + i;
i++
} while(i <= 10);
System.out.println(sum);
//55 //sum=1, i=2 -> 조건확인, 반복 -> sum=1+...+10, i=11, 조건확인, 종료
3. for
for(초기화식; 조건식; 증감식) { 실행문 }
제어 조건을 한번에 지정
조건식(boolean형) true→반복, false→종료
증감식에 따라 조건식이 false가 되어 반복문이 종료됨
반복 횟수를 알고 있을 때 유용
실행문이 한 줄이면 블록{ } 생략 가능
// 1부터 10까지 합
int sum = 0;
for(int i = 1; i <= 10; i++) { //i는 1부터 10까지 1씩 증가
sum += i; //sum = sum + i;
}
System.out.println(sum);
//55
// 1~10까지 임의의 자연수, 소수인지 판별
int num = (int)(Math.random() * 10) + 1;
System.out.println(num);
int count = 0;
for(int i = 1; i <= num; i++) {
if(num % i == 0) {
count++;
}
}
System.out.println(count == 2? "소수입니다." : "소수가 아닙니다.");
//1~200 정수 중 짝수만 출력
for(int i = 1; i <= 200; i+=2) {
System.out.println(i + " ");
}
//A~Z 문자를 가로로 출력 (A=65, Z=90)
for(char c = 'A'; c <= 'Z'; c++) {
System.out.print(c + " ");
}
4. 향상된 for 루프 (Enhanced for loop)
for(배열의 값을 저장할 변수 : 배열이름) { 실행문 }
배열의 원소가 처음부터 끝까지 차례대로 변수에 저장되며 실행문 반복 - 배열의 끝까지 수행 후 반복문 종료
배열/컬렉션의 모든 원소들에 대한 반복 작업을 쉽게 처리
int[] arr = {1, 2, 3, 4, 5};
for(int a : arr) {
System.out.println(a);
}
// 1
// 2
// 3
// 4
// 5
//그냥 for문으로 작성하면 다음과 같음
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
String[] arr = {"월", "화", "수", "목", "금"};
for(String str : arr) {
System.out.println(str + "요일");
}
// 월요일
// 화요일
// 수요일
// 목요일
// 금요일
// 배열에 저장된 원소들의 합계, 평균 구하기
int[] arr = {10, 20, 30, 40, 54};
int sum = 0;
for(int a : arr) {
sum += a; //sum = sum + a;
}
System.out.println(sum); //합계 154
double avg = (double)sum / arr.length; //double형으로 연산하기 위함
System.out.println(avg); //평균 30.8
* 중첩 for문
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <=9; j++) {
System.out.println(i + "-" + j);
}
}
// 1-1
// 1-2
// 1-3
// 1-4
// 1-5
// 1-6
// 1-7
// 1-8
// 1-9
// 2-1
// ...
// 9-9
//이를 응용하여 구구단 출력하기
for(int i = 2; i <= 9; i++) {
System.out.println("구구단" + i + "단");
for(int j = 1; j <= 9; j++) {
System.out.println(i + "x" + j + "=" + i*j);
}
}
// 구구단2단
// 2x1=2
// 2x2=4
// ...
// 9x9=81
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.println(i + "-" + j);
}
}
// 1-1
// 2-1
// 2-2
// 3-1
// 3-2
// 3-3
// 4-1
// ...
// 9-9
> 탈출문
프로그램의 실행 순서를 지정된 곳으로 이동시키는 문장
반복문/블록구조에서 빠져나오기 위해 사용
키워드 - break, continue, return (goto는 자바의 키워드에 포함은 되어 있지만 사용X)
1. break
반복문 내 어떤 곳이든 위치 가능
실행 도중 break 만나면 곧바로 반복문 종료
*무한 반복문 ex. while(true) - 반복 횟수를 정확히 모를 때 사용, 특정 조건에서 종료하도록 함
int i = 0;
while(true) {
System.out.println(i);
if(i == 15) break; // 이 줄이 없으면 무한 반복, 끝나지 않음
i++;
}
// 0
// 1
// 2
// ...
// 15
// 정답을 입력할 때까지 답을 묻기
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("4 + 3 = ?");
System.out.print(">");
int answer = scan.nextInt();
if(answer == 7) {
System.out.println("정답");
break;
} else {
System.out.println("오답");
}
// 4 + 3 = ?
// >(8입력)
// 오답
// 4 + 3 =?
// >(7입력)
// 정답 //끝
2. continue
반복문 내 어떤 곳이든 위치 가능
continue를 만나면 이후 실행문은 건너뛰고, 반복문의 맨 처음(증감식/조건식)으로 이동
// for문에서의 예시
for(int i = 1; i <= 5; i++) {
if(i == 3) continue; //특정 조건에서 continue (i=3이면 아래 출력문 실행 않고 반복문 처음 증감식으로 이동)
System.out.println(i);
}
// 1
// 2
// 4
// 5
// while문에서의 예시
int i = 1;
while(i <= 5) {
if(i == 3) {
i++;
continue; //i=3이면 1증가시켜 i=4, 아래 출력문 실행 않고 반복문 처음(조건식)으로 이동
}
System.out.println(i);
i++;
}
// 1
// 2
// 4
// 5
//만약 아래와 같이 코드를 작성하면, 무한 반복문이 됨
int i = 1;
while(i <= 5) {
System.out.println(i); //1, 2, 3 출력 후
if(i == 3) continue; //여기 조건식에 걸려 반복문 처음으로 이동하지만 i는 증가하지 않고 계속 3이므로 무한 반복
i++;
}
// 1
// 2
// 3
// 3
// 3
// 3
// ...
// continue를 사용함으로써 프로그램을 더 효율적으로 작동시킬 수 있음
// 다음은 정수를 입력받아 그 수까지의 소수의 개수를 출력하는 코드이다
//continue 사용 전 코드
Scanner scan = new Scanner(System.in);
System.out.print("정수입력>");
int num = scan.nextInt();
int sum = 0; //소수의 개수 변수
for(int i = 1; i <= num; i++) {
int count = 0; //약수의 개수 변수
for(int j = 1; j <= i; j++) {
if(i % j == 0) count++;
}
if(count == 2) sum++;
}
System.out.println(sum);
//continue 사용한 코드
Scanner scan = new Scanner(System.in);
System.out.print("정수입력>");
int num = scan.nextInt();
int sum = 0; //소수의 개수 변수
ex:for(int i = 1; i <= num; i++) { //반복문의 이름을 정해준다 "이름:반복문"
int count = 0; //약수의 개수 변수
for(int j = 1; j <= i; j++) {
if(i % j == 0) count++;
if(count >= 3) continue ex; //count가 3이상이면 더이상 소수가 아니므로 중단
}
if(count == 2) sum++;
}
System.out.println(sum);
//프로그램의 작동 시간이 단축됨
*원하는 반복문 탈출하기
탈출문은 기본적으로 해당 탈출문이 속한 반복문만 빠져나온다 (중첩 반복문의 경우, 내부 반복문에서 탈출문을 사용했다면 내부 반복문만 탈출)
따라서 원하는 반복문에서 탈출하기 위해서는 반복문에 이름을 붙이고(이름: 반복문) 해당 반복문을 탈출하도록 입력한다(break 반복문이름;)
//구구단 1단부터 9단까지 출력
int i = 1;
Loop1: while(true) { //반복문 이름 설정
int j = 1;
while(j < 10) {
if(i == 10) break Loop1; //해당 조건에 바깥 반복문까지 빠져나옴
System.out.println(i + "*" + j + "=" + i*j);
j++;
}
i++;
}
3. return
*flag
프로그램이 작동되는 상태를 표시하기 위해 사용하는 변수
언제 어떻게 쓸 지는 코드를 작성하는 사람이 결정한다
예)flag를 boolean형 변수로 선언, false 저장
특정 조건이 만족할 때 flag에 ture를 저장, 조건식에 flag를 넣어 결과를 true로 만들고 원하는 동작을 실행
ex. break 대신 사용하기
Scanner scan = new Scanner(System.in);
System.out.print("금액을 투입하세요>");
int money = scan.nextInt();
while(true) { //무한반복문
System.out.println("\n남은금액: " + money + "원");
System.out.println("[1]밀키스:400원, [2]코카콜라:500원, [3]잔돈받기");
System.out.print(">");
int menu = scan.nextInt();
boolean flag = false; //flag 선언 후 false 저장
switch (menu) {
case 1:
if(money >= 400) {
System.out.println("밀키스를 받았습니다");
money -= 400;
} else {
System.out.println("금액이 부족합니다");
}
break;
case 2:
if(money >= 500) {
System.out.println("코카콜라를 받았습니다");
money -= 500;
} else {
System.out.println("금액이 부족합니다");
}
break;
case 3:
System.out.println("남은금액 " + money + "원을 반환합니다");
flag = true; //case3에서 flag에 true 저장
break;
}
if(flag) break; //case3일때(flag=ture이므로) 반복문 while 종료
}
'course 2021 > JAVA' 카테고리의 다른 글
day07 - method (0) | 2021.08.25 |
---|---|
day06 - array insert, update, delete (0) | 2021.08.24 |
day04 - array, scanner (1) | 2021.08.18 |
day03 - operator (0) | 2021.08.15 |
day02 - variable, datatype, type casting (0) | 2021.08.12 |