day04-java-반복 구조(while, do-while, for)

반복 구조(while, do-while, for)

어떤 복잡한 프로그램 로직도 세 가지 기본 구조를 통해 표현할 수 있습니다:

  1. 순차 구조: 위에서 아래로 한 줄씩 실행되며 모든 문장이 반드시 실행됩니다.
  2. 분기 구조: 조건에 따라 특정 문장을 한 번 실행하며, 모든 문장이 실행되는 것은 아닙니다.
  3. 반복 구조: 조건에 따라 특정 문장을 여러 번 반복 실행하며, 모든 문장이 실행되는 것은 아닙니다.
  1. 반복: 동일하거나 유사한 코드를 반복적으로 실행하는 것

  2. 반복의 세 가지 요소:

  1. 반복 변수 초기화
  2. 반복 조건 (반복 변수에 기반함)
  3. 반복 변수 갱신 (반복 종료 방향으로 변화) 반복 변수: 반복 과정에서 변경되는 값
  1. 반복 구조:
  1. while: 조건 판단 후 실행, 조건이 처음부터 거짓일 경우 한 번도 실행되지 않을 수 있음
  2. do...while: 먼저 실행 후 조건 판단, 최소한 한 번은 실행됨 첫 번째와 세 번째 요소가 동일할 경우 선호
  3. for: 가장 널리 사용되며, 고정된 횟수의 반복을 위한 구조
  1. break: 반복문을 완전히 종료 continue: 현재 반복에서 남은 문장을 건너뛰고 다음 반복으로 이동

Math.random(): Math.random()------------------ 0.0 이상 1.0 미만의 실수 × 1000 ----------------------- 0.0 이상 999.999... 미만의 실수

  • 1 -------------------------- 1.0 이상 1000.999... 미만의 실수 (int) ------------------------ 0 이상 999 이하의 정수
  • 1 -------------------------- 1 이상 1000 이하의 정수

for-랜덤 덧셈 문제 풀이기

package day04;
import java.util.Scanner;
// 랜덤 덧셈 문제 풀이기
public class MathQuiz {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int totalScore = 0; // 총 점수
        for(int count=1;count<=10;count++){ // 10번 반복
            int operand1 = (int)(Math.random()*100); // 피연산자1
            int operand2 = (int)(Math.random()*100); // 피연산자2
            int correctAnswer = operand1 + operand2; // 정답
            System.out.println("("+count+")"+operand1+"+"+operand2+"=?"); // 문제 출력
            System.out.println("계산해보세요!");
            int userAnswer = input.nextInt(); // 사용자 입력
            if(userAnswer==-1){ // 종료 조건
                System.out.println("다음에 다시 만나요!");
                break; 
            }
            if(userAnswer==correctAnswer){
                totalScore += 10; // 정답 시 10점 추가
                System.out.println("맞았습니다");
            }else{
                System.out.println("틀렸습니다");
            }
        }
        System.out.println("총 점수="+totalScore);
    }
}

while 반복 예제:

package day04;
// while 반복 예제
public class MultiplicationTable {
    public static void main(String[] args) {
        int number = 1;
        while(number<10){
            System.out.println(number+"*9="+number*9);
            number++;
        }
        System.out.println("완료");
    }
}

do while 반복 예제:

package day04;
import java.util.Scanner;
// 숫자 맞추기 게임
public class NumberGuessing {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int targetNumber = (int)(Math.random()*1000+1); // 1에서 1000 사이의 난수
        System.out.println(targetNumber); // 도움말
        int guess;
        do{
            System.out.println("맞혀 보세요!");
            guess = input.nextInt(); // 추측 입력
            if(guess==0){
                break;
            }
            if(guess>targetNumber){
                System.out.println("너무 큽니다");
            }else if(guess<targetNumber){
                System.out.println("너무 작습니다");
            }
        }while(guess!=targetNumber); // 조건 확인
        if(guess==targetNumber){
            System.out.println("축하합니다! 맞췄습니다!");
        }else{
            System.out.println("다음에 또 도전하세요!");
        }
    }
}
        

수열 합계 계산

1+2+3+4+5...+100의 합계 계산;
package day04;
// 1+2+3+4+5...+100의 합계 계산;
import java.util.Scanner;
public class SumCalculation {
    public static void main(String[] args) {
        int sum = 0;
        for(int i=1;i<=100;i++){
            sum = sum + i;
        }
        System.out.println(sum);
    }
}<br></br>결과: 5050<br></br>

다음 수열: 9, 99, 999, ... , 9999999999. 이 수열의 합을 계산하여 콘솔에 출력하시오:

방법1:
public class SequenceSum {
        public static void main(String[] args) {
            // 수열 합계 계산
            long digit = 9;
            long total = digit;
            for (int i = 2; i <= 10; i++) {
                digit = digit * 10 + 9;
                total += digit;
            }
            System.out.println("9+99+999+...+9999999999=" + total);
        }
    }

방법2:
public class Test01 {

    public static void main(String[] args) {
        // 9+99+999+9999+...+9999999999=?
        long sum = 0; // 합계
        long term = 0; // 항목
        for(int i=1;i<=10;i++){ // 10번 반복
            term = term*10+9;
            sum = sum+term;
        }
        System.out.println("합계="+sum);

    }
}

다른 수열: 1+1/2+1/3…+1/n (n>=2). 이 수열의 합을 사용자가 입력한 n값을 바탕으로 계산하고 결과를 콘솔에 출력하시오:

방법1:
import java.util.Scanner;
    public class FractionSum {
        public static void main(String[] args) {
            Scanner reader = new Scanner(System.in);
            System.out.println("정수를 입력하세요 (예: 10):");
            int n = reader.nextInt();
            double result = 0;
            for (int i = 1; i < n; i++) {
                result += 1.0 / i;
                if(i==1){
                    System.out.print("1+");
                }else{
                    System.out.print("1/" + i + "+");    
                }
            }
            result += 1.0 / n;
            System.out.print("1/" + n + "=" + result);
        }
    }
<br></br>
방법2:
public class Test01 {

    public static void main(String[] args) {
        // 1/1+1/2+1/3+...+1/n=?
        int n = 15;
        double total = 0;
        for(int i=1;i<=n;i++){ // n번 반복
            total = total+1.0/i;
        }
        System.out.println("합계="+total);

    }
}

태그: java 반복문 while for do-while

8월 12일 08:21에 게시됨