무작정 개발.Vlog

[JAVA+국비교육] 반복문

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

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

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

 

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

java
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부터 원하는 수까지의 합 출력하기

java
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의 배수의 합 출력

java
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단까지 출력하기

java
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문을 활용해서 * 찍기

java
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();
}
}
}
java
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 이내의 수를 입력하고 입력한 수만큼 * 출력하기

java
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개의 수와 원하는 연산자를 입력해서 결과 출력하기

java
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

 

java
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의 배수의 개수 출력하기

java
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

java
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);
}
}
}
java
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   

 

java
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단을 따로 출력하면 된다.

 

 

반응형
블로그의 프로필 사진

블로그의 정보

무작정 개발

무작정 개발

활동하기