2014-09-21 9 views
2

나는 그것을 시도했지만 대답을 실행할 때마다 1.0을 얻는다. 나는 잘못을 알아 내지 못해서 나를 도와주세요. 여기 코드는 다음과 같습니다가 충분하지 않습니다 부동 소수점 값을 갖는 상호을 생산하기 위해Java 프로그램을 사용하여 숫자 n까지 정수의 역수를 더한다

import java.util.Scanner; 
public class Number23 { 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 
    int n=0; 
    float sum = 0,r = 0; 

    System.out.print("Enter a number for n: "); 
    n = input.nextInt(); 

    for(int x = 1; x <= n; x++) 
    { 
     r = (1/x); 
     sum = sum + r; 
    } 

    System.out.print("The sum is "+sum); 
} 

} 

답변

3

rfloat를 선언 : 표현 당신은 그것뿐만 아니라 float을 할 필요가 할당합니다. 당신은 당신이 x에 의해 분할 상수 1f 접미사를 사용하여 작업을 수행 할 수 있습니다

접미사없이
r = (1f/x); 

, 당신의 표현은 정수 결과를 생성하고, 부분을 삭제 정수 부문을 나타냅니다. 귀하의 경우, 0 이외의 값을 얻는 유일한 시간은 x1 일 때입니다.

-1
class reciprocal 
{ 
    public static void main (int n) 
    { 
     float i,a,s=0; 
     for(i=1;i<=n;i++) 
     { 
      a= 1/i; 
      s+=a; 
     } 
     System.out.print("sum is "+s); 
    } 
} 
+3

답을 설명하십시오. – Prudhvi