[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);
}
}
원하는 수를 입력해서 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문 등에 다 사용 가능하다.
}
}
}
}
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);
}
}
구구단 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
}
}
}
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단을 따로 출력하면 된다.
'Language > Java' 카테고리의 다른 글
[JAVA+국비교육] 클래스(Class), 객체 지향(OOP) 시작! (0) | 2021.12.30 |
---|---|
[JAVA+국비교육] 배열 기초 (0) | 2021.12.30 |
[JAVA+국비교육] 증감연산자/산술연산자 & for문/if문 (0) | 2021.12.27 |
[JAVA+국비교육] 변수 선언과 자료형 (0) | 2021.12.27 |
[JAVA+국비교육] 개발 환경 설치 및 출력 (0) | 2021.12.25 |
블로그의 정보
무작정 개발
무작정 개발