제어문 (조건문, 반복문)
조건문 : if문 / if~else if문 / if else문
- bolean값 (true/false)을 얻으므로 true일때만 해당 코드 블록을 실행합다. false일때는 그 다음 조건값으로 넘어가서 실행합니다.
반복문 : for문 / while문 / do ~ while문 / switch문
- 코드가 조건에 맞기 전(true로 인식)까지 계속 반복해서 실행하는 제어문, 조건에 맞지 않게 되면 (false) 중지합니다.
📌 Note Code
Test1. 해당 수가 3또는 4의배수인지 확인
💻 입력
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//수 하나를 입력받아서 3또는 4의배수인지 확인
Scanner sc = new Scanner(System.in);
int su;
String str;
System.out.print("수입력?");//9
su = sc.nextInt();
if(su%3==0 && su%4==0) {
str = "3과 4의 배수입니다.";
}else if(su%3==0){
str = "3의 배수입니다.";
}else if(su%4==0) {
str = "4의 배수입니다.";
}else {
str = "3과 4의 배수가 아닙니다.";
}
System.out.println(su+" = "+str);
sc.close();//생략가능 - 노란색 경고등 표시 이유
}
}
수입력?9
9 = 3의 배수입니다.
📌 Note Code
for문
= for(시작값;최대값;증가값){
}
→ 시작값,최대값,증가값 다 알고 바뀌지 않을 때 ex) 구구단
while문
= 시작값
while(최대값) {
증가값
}
→ 바뀐지 안바뀐지 모르겠을 때 ex) 헬스장 - 고객 정보 출력하고 싶을 때
do~while문
시작값
do{
증가값
}while(최대값)
= 무조건 숫자 하나는 사용자에게 받음 → 원하는 값이 나오면 출력,
값 조건에 충족을 못한다면 다시 숫자 받기
Test2. 구구단 만들기 ver.1
💻 for문 입력
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int dan;
System.out.print("몇단?");
dan = sc.nextInt(); // 스캐너 안에 있는 문자를 정수로 바로 전환해주는 sc.nextInt 사용해주기
for(int i=1,i<=9;i++){
System.out.println(dan+"x"+i+"="+(dan*i));
}
}
}
💻 while문 입력
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int dan;
System.out.print("몇단?");
dan = sc.nextInt(); // 스캐너 안에 있는 문자를 정수로 바로 전환해주는 sc.nextInt 사용해주기
for(int i=1,i<=9;i++){
System.out.println(dan+"x"+i+"="+(dan*i));
}
}
}
💻 do~while문 입력
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k =1
do{
System.out.println(dan+"x"+j+"="+(dan*j);
k++
}while(k<9=);
//무한루프 - while(true)
while(true){
System.out.println("안녕!");
}
}
}
📌 Note Code
Test3. BufferedReader/반복문/조건문
💻 입력
import java.io.IOException;
import java.util.Scanner;
import java.util.function.BiConsumer;
public class test3 {
public static void main(String[] args) throws IOException {
//1~500사이에 원하는 수 -> 계속할래?[Y/N]
Scanner sc = new Scanner(System.in);
int num,sum;
char ch;//[y/n]
while(true) {
do {
System.out.print("[1~500]사이의 수 입력?");
num = sc.nextInt();
}while(1>num||num>500); // do while문에서 크고작음 부호를 나타날땐 반대로
sum = 0;
for(int i=1;i<=10;i++) {
sum =sum+1;
}
System.out.println("1~"+num+"까지의 합 : "+sum);
System.out.println("계속할래?");
ch = (char) System.in.read();
if(ch!='y'&&ch!='Y') {
break;
}
}
}
}
[1~500]사이의 수 입력?300
1~300까지의 합 : 10
계속할래?y
[1~500]사이의 수 입력?200
1~200까지의 합 : 10
계속할래?n
📌 Note Code
Test4. 100까지의 합, 홀수의 합, 짝수의 합, 3의 배수의 합
💻 입력
public class test4 {
public static void main(String[] args) {
int i,sum;
//100까지의 합
sum=0;
for(i=1;i<101;i++) {
sum = sum+i; // sum+=i (자기자신에 i만큼 더할 때)
}
//홀수의 합
sum=0;
for(i=1;i<101;i+=2) {
sum+=i;
}
//짝수의 합
sum=0;
for(i=2;i<101;i+=2) {
sum = sum+2;// sum+=i
}
//3의배수 합
sum=0;
for(i=3;i<101;i+=3) {
sum+=i;
}
System.out.println("결과는"+sum);
}
}
📌 Note Code
Test5. 구구단 ver.2
💻 입력
public class test5 {
public static void main(String[] args) {
int dan,i;
for(dan=1;dan<=9;dan++) {
System.out.println("=======================");
System.out.println();
System.out.println("["+dan+"단]");
for(i=1;i<=9;i++) {
System.out.println(dan+"x"+i+"="+(dan*i));
}
System.out.println();
}
}
}
=======================
[1단]
1x1=1
1x2=2
1x3=3
1x4=4
1x5=5
1x6=6
1x7=7
1x8=8
1x9=9
=======================
[2단]
2x1=2
2x2=4
2x3=6
2x4=8
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18
=======================
.
.
.
📌 Note Code
Test6. 별찍기
💻 입력
public class test6 {
public static void main(String[] args) {
//별찍기
int i,j;
for(i=1;i<=5;i++) {
for(j=1;j<=5-i;j++) {
System.out.print(" ");
}
for(j=1;j<=i;j++) {
System.out.print("*");
}
System.out.println(" ");
}
//반대별찍기
for(i=1;i<=5;i++) {
for(j=1;j<=i;j++) {
System.out.print("*");
}
for(j=1;j<=5-i;j++) {
System.out.print(" ");
}
System.out.println(" ");
}
//트리만들기
for(i=1;i<=5;i++) {
for(j=1;j<=5-i;j++) {
System.out.print(" ");
}
for(j=1;j<=i*2-1;j++) {
System.out.print("*");
}
System.out.println(" ");
}
//역트리
for(i=5;i>=1;i--) {
for(j=1;j<=5-i;j++) {
System.out.print(" ");
}
for(j=1;j<=i*2-1;j++) {
System.out.print("*");
}
System.out.println(" ");
}
//트리+역트리 = 마름모, 모래시계(중간에 겹치니까 1개 빼줘야함)
}
}
}
//이 중에 한개의 답만 출력함
*
***
*****
*******
*********
📌 Note Code
Test7. 1~3사이의 수 중 수입력?
💻 입력
import java.util.Scanner;
public class test7 {
public static void main(String[] args) {
// switch문 사용
Scanner sc = new Scanner(System.in);
int i;
System.out.print("[1~3]중에 뭐고를꺼야?"); //이 외에 숫자는 default:, "오류"적어주기
i=sc.nextInt();
switch (i) {
case 1:
System.out.println("*");
break; //break;가 있어야 아랫값들 출력 x
case 2:
System.out.println("**");
break;
case 3:
System.out.println("***");
break;
default:
System.out.println("오류");
}
}
}
💡 출력
[1~3]중에 뭐고를꺼야?2
**
📌 Note Code
Test8. 계산기 만들기 ver.2
💻 입력
import java.io.IOException;
import java.util.Scanner;
public class test8 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int i,j;
char ch; //사칙연산 +,-,/,*
System.out.print("첫번째 수");
i = sc.nextInt();
System.out.print("두번째 수");
j = sc.nextInt();
System.out.print("뭘로 연산할거야?");
ch = (char)System.in.read();
//두가지는 %c로, 두가지는 사칙연산 그대로 입력했음
switch (ch) {
case '+':
System.out.printf("결과는 %d%c%d=%d", i,ch,j,(i+j)); //사칙연산 =%c
break;
case '-':
System.out.printf("결과는 %d%c%d=%d", i,ch,j,(i-j)); //사칙연산 =%c
break;
case '/':
System.out.printf("결과는 %d/%d=%d", i,j,(i/j));
break;
case '*':
System.out.printf("결과는 %d*%d=%d", i,j,(i*j));
break;
}
}
}
💡 출력
첫번째 수2
두번째 수3
뭘로 연산할거야?*
결과는 2*3=6