[JAVA+국비교육] 반복문
by 무작정 개발2021.12.24(4일 차)
벌써 금요일이 됐다. 주말이 있다는 생각에 마음이 편해진다. ㅎㅎ
오늘은 반복문 for문, while문, do-while문에 대해 배웠다.
반복문을 사용하여 단 출력하기
javapackage 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); } }

원하는 수를 입력해서 1부터 원하는 수까지의 합 출력하기
javapackage 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문 등에 다 사용 가능하다. } } } }

1부터 100까지의 합, 홀 수합, 짝수합, 3의 배수의 합 출력
javapackage 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); } }

구구단 2단~9단까지 출력하기
javapackage 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문을 활용해서 * 찍기
javapackage 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(); } } }
javapackage 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 이내의 수를 입력하고 입력한 수만큼 * 출력하기
javapackage 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개의 수와 원하는 연산자를 입력해서 결과 출력하기
javapackage 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 } } }

Q. 퀴즈풀이
1번
1. 1에서 100까지 수의 홀수의 합, 짝수의 합, 전체의 합 출력하기
짝수합 : 2550
홀 수합 : 2500
합 : 5050
javapackage 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의 배수의 개수 출력하기
javapackage 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
javapackage 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); } } }
javapackage 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
javapackage 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단을 따로 출력하면 된다.
블로그의 정보
무작정 개발
무작정 개발