제어문
조건문 / 반복문 / 탈출문
조건문
특정 조건을 만족할 때 실행할 문장을 작성하는데 사용한다.
- 조건문 if ~ else
- if문은 프로그램의 흐름을 바꾸는데 사용되는 조건 선택 분기문입니다.
- if문의 조건식 결과는 반드시 boolean형이어야 합니다.
- 조건식이 참이면 if문 블록안의 실행문이 실행되고, 거짓이면 else문 블록안의 실행문이 실행됩니다.
- if문장은 else문장 없이 사용할 수 있습니다. 그러나 else문장은 if문장 없이 단독으로 사용할 수 없습니다.
- 조건식의 결과가 거짓일 때 실행할 문장이 없다면, else문 이하를 생략해도 됩니다.
if(조건식) {
소스코드
} else {
소스코드
}
package javaquiz;
import java.util.Scanner;
public class Test02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("바구니의 크기를 입력하세요 : ");
int a = sc.nextInt();
System.out.print("사과의 개수를 입력하세요 : ");
int b = sc.nextInt();
System.out.println("사과의 개수 : "+ b);
int c = (int)(b / a);
if( b%a == 0) {
System.out.println("바구니는" + (int)c + " 개 필요해요.");
}else {
System.out.println("바구니는" + (int)(c + 1) + " 개 필요해요.");
}
sc.close();
}
}
설명
b 값에서 a 값을 나눈 나머지가 0이라면 몫을 출력하고
나머지가 0이 아니라면 1을 더하여 출력한다.
package day02;
public class test03 {
public static void main(String[] args) {
int point = (int)(Math.random() * 100)+1;
if(point >= 60) {
System.out.println("점수 : " + point + " 입니다. 합격입니다." );
}else {
System.out.println("점수 : " + point + " 입니다. 불합격입니다." );
}
}
}
랜덤변수를 입력받아, 합격인지 불합격인지 확인
- 다중 분기 조건문 if ~ else if ~ else
- 여러 조건들을 설정할 때 사용하는 조건문입니다.
- if ~ else if 구문은 위에서부터 차례대로 조건을 검색하면서 내려오므로 조건식 설정에 주의를 해야 합니다.
if ( 조건식 ) {
} else if ( 조건식 ) {
}
.
.
.
} else {
}
public class test04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("점수를 입력하세요 : ");
int point = sc.nextInt();
if(point >= 90) {
System.out.println("A학점입니다.");
}else if(point >= 80) {
System.out.println("B학점입니다.");
}else if(point >= 70) {
System.out.println("C학점입니다.");
}else if(point >= 60) {
System.out.println("D학점입니다.");
}else if(point < 60) {
System.out.println("F학점입니다.");
}
}
}
예제 - 입력한 두 수를 비교하여, 더 큰 값을 출력하시오.
import java.util.Scanner;
public class test06 {
public static void main(String[] args) {
//정수 2개 입력받아, 큰 수를 출력
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 수 :");
int a = sc.nextInt();
System.out.print("두 번째 수 :");
int b = sc.nextInt();
if(a>b) {
System.out.println("큰 수 : " + a);
}else if(a==b) {
System.out.println("수가 동일합니다.");
}else {
System.out.println("큰 수 : " + b);
}
sc.close();
}
}
Switch ~ Case 문
복합 if문은 구현하기 복잡하고 프로그램의 효율성이 감소되는 단점이 존재한다.
- 다중 분기 문제를 해결할 때는 switch문을 사용한다.
- switch문은 다중 분기 구조이므로 복합 if문의 논리적인 구조를 간결하게 표현할 수 있다.
- if문과는 달리 조건식이 사용되지 않고, 값을 가지는 변수 또는 표현식이 판단조건으로 사용된다.
- 연산 결과의 데이터 타입은 int, String, Enum(열거형)이 사용된다.
- case문 뒤에 사용되는 값은 변수를 사용할 수 없고, 반드시 상수를 사용해야 합니다.
- switch ~ case문에서 default는 if~else에서 else와 비슷한 효과를 가집니다.
public class Main {
public static void main(String[] args) {
int a = 2;
switch(a) {
case 1:
System.out.println("1번 실행");
break;
case 2:
System.out.println("2번 실행");
case 3:
System.out.println("3번 실행");
case 4:
System.out.println("4번 실행");
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("[사칙연산을 하는 프로그램입니다.]");
System.out.print("첫 번째 정 수 : ");
int a = sc.nextInt();
System.out.print("연산을 선택하세요. [+, -, *, /] : ");
String b = sc.next();
System.out.print("두 번째 정 수 : ");
int c = sc.nextInt();
switch(b) {
case "+":
System.out.println("두 수의 덧셈은 : " + a+c);
break;
case "-":
System.out.println("두 수의 뺼셈은 : " + (int)(a-c));
break;
case "*":
System.out.println("두 수의 곱셈은 : " + a*c);
break;
case "/":
System.out.println("두 수의 나눗은 : " + a/c);
break;
}
}
}
반복문(while)
여러 번 반복 실행할 코드가 있다면 반복문을 작성한다.
- while문은 조건식을 만족하는 동안 반복문을 실행하는데, 조건식을 검사해서 조건식이 참(True)이면 실행문을 반복하고, 거짓이면 while문을 빠져나옵니다.
- while문에 들어가는 조건식도 if문과 마찬가지로 반드시 boolean타입으로 결과를 반환해야 합니다.
- 조건식 안에 true를 넣으면 무한루프가 발생하기 때문에 반드시 탈출구문을 넣어야 합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("첫 번째 수를 입력하세요 : ");
int a = sc.nextInt();
System.out.print("두 번째 수를 입력하세요 : ");
int b = sc.nextInt();
int result = a*b;
while(a<10) {
while(b<10) {
System.out.println(a + " x " + b + "=" + result);
b++;
}
a++;
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 입력받은 수가 소수인지 판별하는 간단한 방법
Scanner sc = new Scanner(System.in);
System.out.print("소수 판별을 원하는 수를 입력하세요 : ");
int a = sc.nextInt();
int b = 2;
while(a % b != 0) {
b++;
}
if(a == b) {
System.out.println("소수입니다.");
}else {
System.out.println("소수가 아니다.");
}
}
}
While문을 이용하여 입력받은 값까지의 합 구하기
1~100까지의 정수 중에서 짝수만 가로로 출력하기
1000의 약수 개수 구하기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 1. 어떤 수를 입력받아, 1에서 입력받은 수까지의 합을 구하시오.
// 2. 1~100까지 정수 중에서 짝수만 가로로 출력하시오.
// 3. 1000의 약수의 개수
Scanner sc = new Scanner(System.in);
System.out.println("첫 번째 문제");
System.out.print("정수를 입력하세요 : ");
int a = sc.nextInt();
int b = 1;
int sum = 0;
while(b<a+1) {
sum += b;
b++;
}
System.out.println("입력받은 수까지의 합은 " + sum + "입니다.");
System.out.println("---------------------------------------");
int c = 1;
while(c<100) {
if(c%2 == 0) {
System.out.print(c + " ");
}
c++;
}
System.out.println();
System.out.println("----------------------------------------");
int d = 1;
int sum1 = 0;
while(d <= 1000) {
if(1000 % d == 0) {
System.out.print(d + " ");
sum1 += d;
}
d++;
}
System.out.print(" >>> ");
System.out.println("1000의 약수의 합 : " + sum1);
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 정수를 입력받아, 입력한 수의 약수의 합계를 출력한다.
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int a = sc.nextInt();
int i = 1;
int sum = 0;
while(i <= a) {
if(a%i==0) {
System.out.print(i + " ");
sum += i;
}
i++;
}
System.out.println("\n" + sum);
}
}
Do - While 문
- do 이하의 구문이 먼저 실행된 뒤에 조건식을 검사하므로 결과가 true이든 false이든 무조건 한번은 실행한다.
- 조건식의 결과에 상관없이 루프를 반드시 한번 이상 실행시키도록 할 때 사용한다.
do {
} while()
public class Main{
public static void main(String[] args) {
int x = 100;
int sum2 = 0;
do {
sum2 += x;
x++;
}while(x<=10);
System.out.println(sum2);
}
}
for 문
- 제어조건을 한꺼번에 지정한다는 점이 다른 반복문과는 다르다.
- 정확한 반복 횟수를 알고 있을 때는 for문이 while문보다 유용하다.
- 다른 제어문과 같이 실행문장이 한줄이면 블록 {}을 생략할 수 있다.
< for문의 구조 >
for(초기값; boolean형 조건식; 반복 표현식) {
반복할 실행문;
}
향상된 for 루프 (Enhanced for loop)
- 배열 및 컬렉션에 들어있는 모든 원소들에 대한 반복 작업을 매우 쉽게 처리가 가능하다.
for(배열의 값을 담을 변수 : 배열의 이름) {
실행문;
}
숫자 내림차순으로 출력하기
public class Main {
public static void main(String[] args) {
int sum = 0;
for(int i=10; i>0; i--) {
System.out.println(i);
}
}
}
[랜덤한 숫자를 입력받아 구구단 거꾸로 출력하기]
public class Main{
public static void main(String[] args) {
int gu = (int)(Math.random() * 9) + 1;
System.out.println("구구단 " + gu + " 단");
for(int i=9; i>0; i--) {
System.out.println(gu + " x " + i + " = " + gu * i);
}
}
}
[ 배수 출력하기 ]
for(int i=7; i<100; i++) {
if( i % 7 == 0) {
System.out.print(i + " ");
}
}
[ 두 수 사이의 합 출력하기 ]
int sum = 0;
for(int j = 50; j<=100; j++) {
sum += j;
}
[4의 배수이면서 8의 배수가 아닌 값 출력하기]
for(int k=0; k<200; k++) {
if(k % 4 == 0 && k % 8 != 0) {
System.out.print(k + " ");
}
}
[ A~Z 까지 문자열 출력하기 ]
for(char a = 'A'; a<='Z'; a++ ) {
System.out.print(a);
}
for(int b =65; b<=90; b++) {
System.out.print((char)(b)+ " ");
}
728x90
'Programming > Java' 카테고리의 다른 글
반복문을 이용한 별만들기 (0) | 2023.10.31 |
---|---|
[JAVA] 배열 (0) | 2023.10.30 |
[JAVA] 배열과 입력 (2) | 2023.10.26 |
[JAVA] 연산자 (0) | 2023.10.25 |
[JAVA] 데이터 타입과 형변환 (0) | 2023.10.25 |