무작정 개발.Vlog

[JAVA+국비교육] 반복문

by 무작정 개발
반응형
2021.12.24(4일 차)

벌써 금요일이 됐다. 주말이 있다는 생각에 마음이 편해진다. ㅎㅎ

오늘은 반복문 for문, while문, do-while문에 대해 배웠다.

 

반복문을 사용하여 단 출력하기

package com.day3;

import java.util.Scanner;

public class Test1 {

	public static void main(String[] args) {
		
		//반복문(for, while, do-while)
		
		Scanner sc = new Scanner(System.in);
		
		int dan;
		
		System.out.print("단 입력 : ");
		dan = sc.nextInt();
		
		//for문 : 최소값,최대값 or 증가값을 정확히 알면 무조건 for문
		for(int i=1; i<=9; i++) {
			System.out.println(dan + "*" + i + "=" +(dan*i));
		}
		
		System.out.println("----------------------------");
		
		//while문 : 값이 정확하지 않을 때 사용
		int j=0;
		while(j<9) {
			j++; //증감식을 안쓰면 J=1이 무한반복됨. 증감식을 println밑에 넣으면 j *0부터 나와서 증감식은 위에
			System.out.println(dan + "*" + j + "=" + (dan*j));
			
		}
		System.out.println("----------------------------");
		
		//do-while문 : 먼저 사용자한테 정보를 요구하고  요구한 정보를 보고 확인 할 때 사용한다
		int k=0;
		do {
			k++;
			System.out.println(dan + "*" + k + "=" + (dan*k));
		} while(k<9);	
	}
}

for&#44; while&#44; do-while 문 실행 결과
Test1 실행화면


원하는 수를 입력해서 1부터 원하는 수까지의 합 출력하기

package com.day3;

import java.io.IOException;
import java.util.Scanner;

public class Test2 {

	public static void main(String[] args) throws IOException {
		
		//입력한 수까지의 합계를 구하기
		
		Scanner sc = new Scanner(System.in);
		
		int su, sum = 0;
		char ch;
		
		while(true) { //무한루프
			
			do {
				System.out.print("원하는 수 : ");//100
				su = sc.nextInt();
			} while(su<1 || su>5000); //원하는수를 입력하되 while에 조건을 건다
			//조건을 반대로 적어야 while을 빠져나온다.
			
			sum = 0; //한번 연산을 하면 sum값을 초기화 해준다. 초기화를 안하면 값이 누적된다!
			for(int i=1; i<=su; i++) {
				
				sum += i; //sum = sum + i;(sum에 값 누적)
			}
			
			System.out.println("1~" + su + "까지의 합 : " + sum);
			
			System.out.print("계속할래? [Y/N]");// Y,y,N,n
			ch = (char)System.in.read();
			
			if(ch != 'Y' && ch !='y') { //Tip 양쪽이 부정(!=)이 나오면 중간에 ||(or)쓰면 안되고 &&(and)를 써야함.!!!
				System.out.println("프로그램 종료");
				break; //break는 if문, while문, do-while문, for문, switch문 등에 다 사용 가능하다.
			}
		}
	}
}

Test2 실행 결과
Test2 실행화면


1부터 100까지의 합, 홀 수합, 짝수합, 3의 배수의 합 출력

package com.day3;

public class Test3 {

	public static void main(String[] args) {
		
		int n, sum;
		
		
		//1부터 100까지의 합
		sum = 0;
		for(n=1; n<=100; n++) {
			sum += n;
		}
		System.out.println("1부터 100까지의 합 : " + sum);
		
		//홀수의 합
		sum = 0;
		for(n=1; n<=100; n += 2) {
			sum += n;
		}
		System.out.println("1부터 100까지 홀수의 합 : " + sum);
		
		//짝수의 합
		sum = 0;
		for(n=0; n<=100; n+=2) {
			sum += n;
		}
		System.out.println("1부터 100까지 짝수의 합 : " + sum);
		
		//3의 배수의 합
		sum = 0;
		for(n=3; n<=100; n+=3) {
			sum += n;
		}
		System.out.println("1부터 100까지 3의 배수의 합 : " + sum);
	}
}

Test3 실행 화면
Test3 실행화면


구구단 2단~9단까지 출력하기

package com.day3;

public class Test4 {

	public static void main(String[] args) {
		
		// 다중 for문
		
		int i, j;
		
		for(i=2; i<=9; i++) { //2단~9단
			
			
			System.out.println(i + "단");
			
			
			for(j=1; j<=9; j++) { //ex) 2단일때 1부터 9까지 9번을 돌게된다 (2*1 ~ 2*9)
				
				//System.out.println(i + "*" + j + "=" + (i*j));
				System.out.printf("%d * %d = %d %n", i, j, (i*j));
			}
			
			System.out.println("----------------");
		}
	}
}

for문을 활용해서 * 찍기

package com.day3;

public class Test5 {

	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*2-1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		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();
		}
		
	}
}
package com.day3;

public class Test5_1 {

	public static void main(String[] args) {
		
		int i, j;
		
		//*찍기 모래시계 모양
		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();
		}
		
		for(i=2; 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();
		}
	}
}

1~3 이내의 수를 입력하고 입력한 수만큼 * 출력하기

package com.day3;

import java.util.Scanner;

public class Test6 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int su;
		
		System.out.print("1~3이내의 수 : "); // 1 2 3
		su = sc.nextInt();
		
		switch(su) {	//switch문은 if문으로 변환 가능하다.	shitch( ) 괄호 안에는 8개의 자료형과 string 가능
															    // char형이 오면 ' ' 를해주고 문자열이 오면 " " 
		case 3: 
			System.out.println("***");
			break;
			
		case 2:
			System.out.println("**");
			break;
		case 1:
			System.out.println("*");
			break;
			
			default:
				System.out.print("숫자 입력 오류 !");
		}
	}
}

선생님이 switch문은 if문으로 변환 가능하다고 말씀하셨다. 


2개의 수와 원하는 연산자를 입력해서 결과 출력하기

package com.day3;

import java.io.IOException;
import java.util.Scanner;

public class Test7 {

	public static void main(String[] args) throws IOException {

		Scanner sc = new Scanner(System.in);

		int num1, num2;
		char oper;

		System.out.print("첫번째 수 : ");
		num1 = sc.nextInt();

		System.out.print("두번째 수 : ");
		num2 = sc.nextInt();

		System.out.print("연산자[+, -, *, /] : ");

		oper = (char)System.in.read(); //system.in.read가 위의 연산자 기호의 아스키 코드를 읽어준다.

		switch(oper) {	// 문자를 받아서 ' ' 표시!

		case '+':
			System.out.printf("%d%c%d = %d %n", num1, oper, num2, (num1+num2));
			break;

		case '-':
			//System.out.print(num1-num2);
			System.out.printf("%d%c%d = %d %n", num1, oper, num2, (num1-num2));
			break;

		case '*':
			System.out.printf("%d%c%d = %d %n", num1, oper, num2, (num1*num2));
			break;							

		case '/':
			System.out.printf("%d %c %d = %d %n", num1, oper, num2, (num1/num2));
		default:								// %c = oper
		}
	}
}

Test7 실행 화면
Test7 실행화면


Q. 퀴즈풀이

1번

1. 1에서 100까지 수의 홀수의 합, 짝수의 합, 전체의 합 출력하기
 짝수합 : 2550
 홀 수합 : 2500
 합 : 5050

 

package com.day3;

import java.util.Scanner;

public class Q1 {

	public static void main(String[] args) {
		
		int i = 1, sum1, sum2;
		
		sum1=0;
		sum2=0;
		//while문 사용
		while(i<100) {
			sum1 += i++; //홀수 합
			sum2 += i++; //짝수 합
		}
		
		System.out.println("짝수합 : " + sum2);
		System.out.println("홀수합 : " + sum1);
		System.out.println("전체 합 : " + (sum1+sum2));
	}

	public static class Q1_1 {

		public static void main(String[] args) {

			int i = 1, sum1, sum2;

			sum1=0;
			sum2=0;
			//do-while문
			do {
				sum1 += i++; 
				sum2 += i++; 
			} while(i<100);

			System.out.println("짝수의 합 : " + sum2);
			System.out.println("홀수의 합 : " + sum1);
			System.out.println("전체 합 : " + (sum1+sum2));
		}

	}
}

2번

1에서 100까지의 수 중에 3의 배수의 개수 출력하기

package com.day3;

public class Q2 {

	public static void main(String[] args) {
		
		int i, sum=0;
		
		for(i=1; i<=100; i++) {
			if(i%3 == 0) { // 3으로 나누었을 때 나머지가 0인 수
				sum++;     //3의 배수가 나올 때마다 sum을 1씩 증가
			}
		}
		System.out.println("3의 배수의 개수 :" + sum);
	}
}

3번

두 수를 입력받아 적은 수에서 큰 수까지의 합 출력하기
1~100까지의 합 : 5050

package com.day3;
//3. 두수를 입력받아 적은 수에서 큰수까지의 합
//		1~100 까지의 합 : 5050
import java.util.Scanner;

public class Q3_1 {
    public static void main(String[] args) {
        //if와 if-else문 사용
        Scanner sc = new Scanner(System.in);

        int num1, num2;
        int sum = 0;

        System.out.print("첫번째 수 입력  : ");
        num1 = sc.nextInt();
        System.out.print("두번째 수 입력 : ");
        num2 = sc.nextInt();

        if(num1>num2) {         // 첫번째 입력한 수가 클 때
            for(int i=num2; i<=num1; i++) {
                sum += i;
            }
            System.out.printf("%d에서 %d까지의 합 : %d ", num2, num1, sum);
        } else if(num1<num2) {      //첫번째 입력한 수가 작을 때
            for(int i=num1; i<=num2; i++) {
                sum += i;
            }
            System.out.printf("%d에서 %d까지의 합 : %d", num1, num2, sum);
        }
    }
}
package com.day3;

import java.util.Scanner;

public class Q3_2 {

    public static void main(String[] args) {
         // 3. 두수를 입력받아 적은 수에서 큰수까지의 합 1~100 까지의 합 : 5050

        Scanner sc = new Scanner(System.in);

        int a, b, c, sum;

        sum = 0;

        System.out.println("두 개의 숫자를 입력하세요.");
        a = sc.nextInt();
        b = sc.nextInt();

        if (a > b) { //a가 큰수 b가 작은 수 일때
            c = a;   // a가 작은 수로 b를 큰 수가 되도록 위치를 바꿔서 계산
            a = b;
            b = c;
        }

        for (int i = a; i <= b; i++) {  // a가 작은수 b가 큰 수일 때
            sum += i;                   // if문을 패스하고 for문 진행
        }
        System.out.printf("%d와 %d사이 값들의 합: %d",a,b, sum);
    }

}

2가지 방법으로 풀어봤음


4번

4. 아래와 같이 구구단을 출력하세요

        2* 1= 2         3* 1= 3         4* 1= 4         5* 1= 5
        2* 2= 4         3* 2= 6         4* 2= 8         5* 2=10
        2* 3= 6         3* 3= 9         4* 3=12         5* 3=15
        2* 4= 8         3* 4=12         4* 4=16         5* 4=20
        2* 5=10         3* 5=15         4* 5=20         5* 5=25
        2* 6=12         3* 6=18         4* 6=24         5* 6=30
        2* 7=14         3* 7=21         4* 7=28         5* 7=35
        2* 8=16         3* 8=24         4* 8=32         5* 8=40
        2* 9=18         3* 9=27         4* 9=36         5* 9=45

        6* 1= 6         7* 1= 7         8* 1= 8         9* 1= 9
        6* 2=12         7* 2=14         8* 2=16         9* 2=18
        6* 3=18         7* 3=21         8* 3=24         9* 3=27
        6* 4=24         7* 4=28         8* 4=32         9* 4=36
        6* 5=30         7* 5=35         8* 5=40         9* 5=45
        6* 6=36         7* 6=42         8* 6=48         9* 6=54
        6* 7=42         7* 7=49         8* 7=56         9* 7=63
        6* 8=48         7* 8=56         8* 8=64         9* 8=72
        6* 9=54         7* 9=63         8* 9=72         9* 9=81   

 

package com.day3;
//4. 아래와 같이 구구단을 출력하세요

public class Q4 {
    public static void main(String[] args) {


        for(int i=1; i<=9; i++) {// 곱하기 횟수
            for(int j=2; j<=5; j++) { // 2단부터 5단까지
                System.out.printf("%d * %d = %d", j, i, i * j);
                System.out.print("		");
            }
            System.out.println(); //곱셈 한번을 끝나면 줄바꿈
        }
        System.out.println();

        for(int i=1; i<=9; i++) {// 곱하기 횟수
            for(int j=6; j<=9; j++) { // 2단부터 5단까지
                System.out.printf("%d * %d = %d", j, i, i * j);
                System.out.print("		");
            }
            System.out.println(); //곱셈 한번을 끝나면 줄바꿈
        }

    }
}

풀이

 

먼저 구구단 출력은 기본이니 설명은 생략한다.  위의 실행결과를 보면 2단부터 5단까지 가로로 출력하고

한 줄 뛰고 6단부터 9단까지 출력한다. 이를 보면 2~5단 6~9단을 따로 출력하면 된다.

 

 

반응형

블로그의 정보

무작정 개발

무작정 개발

활동하기