반응형
조화급수(Harmonic series)는 수학에서 1부터 시작해서 각 항이 점점 작아지는 형태로, 다음과 같은 식으로 표현됩니다:
Hn=1+1/2+1/3+1/4+⋯+1/n
여기서 Hn은 조화급수의 합입니다. 이를 계산하는 자바 프로그램을 작성하면서 쉽게 이해할 수 있도록 단계별로 설명하겠습니다.
1. 프로그램의 전체 구조 이해하기
자바 프로그램은 보통 다음과 같은 구조로 작성됩니다:
- 입력: 사용자로부터 계산하고 싶은 n 값을 입력받습니다.
- 처리: 조화급수를 계산합니다.
- 출력: 계산 결과를 화면에 출력합니다.
2. 세부 코드 설명
(1) 필요한 도구 준비
자바에서 사용자 입력을 받으려면 Scanner라는 클래스를 사용해야 합니다. 이를 사용하여 n 값을 입력받을 것입니다.
(2) 조화급수 계산
조화급수를 계산하려면 반복문을 사용해서 1,1/2,1/3,⋯ ,1/n을 더해줘야 합니다. 이를 위해 for문을 사용합니다.
3. 전체 코드
아래는 조화급수 합을 계산하는 자바 프로그램 코드입니다:
import java.util.Scanner; // 사용자 입력을 받기 위한 도구
public class HarmonicSeries {
public static void main(String[] args) {
// 1. 사용자로부터 n 입력받기
Scanner scanner = new Scanner(System.in);
System.out.print("조화급수를 계산할 n 값을 입력하세요: ");
int n = scanner.nextInt();
// 2. 조화급수 합 계산하기
double harmonicSum = 0.0; // 합을 저장할 변수
for (int i = 1; i <= n; i++) {
harmonicSum += 1.0 / i; // 각 항의 값을 더하기
}
// 3. 결과 출력하기
System.out.printf("n=%d일 때 조화급수의 합은 %.5f 입니다.\n", n, harmonicSum);
// 스캐너 닫기 (좋은 습관)
scanner.close();
}
}
4. 코드 설명
(1) Scanner를 이용한 입력
Scanner scanner = new Scanner(System.in);
System.out.print("조화급수를 계산할 n 값을 입력하세요: ");
int n = scanner.nextInt();
- Scanner scanner = new Scanner(System.in);: 키보드로부터 입력을 받을 수 있는 스캐너 객체를 생성합니다.
- scanner.nextInt();: 사용자가 입력한 정수 값을 읽어옵니다.
(2) 조화급수 계산
double harmonicSum = 0.0; // 결과를 저장할 변수
for (int i = 1; i <= n; i++) {
harmonicSum += 1.0 / i; // 각 항의 값을 누적합
}
- double harmonicSum = 0.0;: 소수점 값을 저장하기 위해 double 타입을 사용합니다.
- for (int i = 1; i <= n; i++): 1부터 n까지 반복합니다.
- harmonicSum += 1.0 / i;: 1,1/2,1/3,⋯를 순서대로 더합니다.
(3) 결과 출력
System.out.printf("n=%d일 때 조화급수의 합은 %.5f 입니다.\n", n, harmonicSum);
- 프로그램이 끝날 때 스캐너를 닫아주는 것이 좋습니다. 이는 자원을 효율적으로 관리하기 위한 습관입니다.
5. 실행 예제
입력:
조화급수를 계산할 n 값을 입력하세요: 5
출력:
n=5일 때 조화급수의 합은 2.28333 입니다.
6. 추가 팁
- 실수 처리 주의: 1.0 / i처럼 1.0을 사용해 실수 계산을 해야 정확한 결과를 얻을 수 있습니다. 그렇지 않으면 정수 나눗셈이 발생할 수 있습니다.
- 큰 n 값 계산: 값이 커지면 합이 점점 천천히 증가합니다. 실험해보면서 확인해 보세요!
반응형
'자바(Java)' 카테고리의 다른 글
Java Swing을 사용하여 계산기를 만드는 프로그램 쉽게 이해하기 (0) | 2024.11.20 |
---|---|
AWT를 사용하여 간단한 계산기를 만드는 Java 프로그램 쉽게 이해하기 (0) | 2024.11.19 |
기수 정렬 Java 프로그램 및 알고리즘 쉽게 이해하기 (0) | 2024.11.17 |
Java에서 이진 검색을 위한 프로그램 쉽게 이해하기 (0) | 2024.11.16 |
행렬의 전치를 찾는 Java 프로그램 쉽게 이해하기 (2) | 2024.11.15 |