인프런 커뮤니티 질문&답변

핫도그님의 프로필 이미지
핫도그

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

While

for 문_ 35강 (~까지 수들의 합 구하기)

작성

·

501

0

 질문 -> //1. 2의 거듭제곱 반복문을 이렇게 만들어도 될까요?

        //2. 2^1, 2^2까지의 총합: ... 입니다. 출력되는 말을 다르게 하고 싶은 데 if 문이 너무 길어집니다. if 문 짧게 하고 만들고 싶습니다. 


public class _05_For {
    public static void main(String[] args) {
        //생각나서 만든 2의 거듭제곱 For 문
        // 2의 0승부터 2의 10승까지의 합: 2047이 나와야 한다.
        // 출력되는 문장들의 말을 다르게 하고 싶다 2^1, 2^2까지의 총합: 이런 식으로
        int Sum = 0; 

        for (int s = 0; s < 11; s++) {
            Sum += Math.pow(2, s);  //거듭제곱을 계산하기 위해 Math.pow함수(?)를 가져옴

            if(s == 0) {
                System.out.println("2^0까지의 총합: " + Sum + " 입니다.");
             } else if (s == 1) {
                System.out.println("2^1까지의 총합: " + Sum + " 입니다.");
            } else if (s == 2) {
                System.out.println("2^2까지의 총합: " + Sum + " 입니다.");
            }
            // 2^10까지 표현하기에는 조건문이 너무 많아짐, 줄이는 방법을 알고 싶다.
        }
        System.out.println("2^의 1부터 10까지, 모든 수의 총합: " + Sum + " 입니다.");

    }
 }

답변 2

1

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
Math.pow() 를 이용한 거듭제곱 연산의 합 구하기 반복문의 접근, 아주 좋습니다. 약간만 응용하면 출력문도 반복문 속에서 딱 한 번만 출력하는 것으로 바꿀 수 있지요. 다음과 같이 코드를 변경해보았으니 어떤 부분이 바뀌었는지 확인해보시면 도움되실 것 같아요 😊

int Sum = 0;
for (int s = 0; s < 11; s++) {
    Sum += Math.pow(2, s);
    System.out.println("2^" + s + "까지의 총합: " + Sum + " 입니다.");
}
System.out.println("2^의 0부터 10까지, 모든 수의 총합: " + Sum + " 입니다.");

감사합니다.

0

핫도그님의 프로필 이미지
핫도그
질문자

감사합니다! :)

핫도그님의 프로필 이미지
핫도그

작성한 질문수

질문하기