java—编写一个程序,计算(a/1)+(a/2)+(a/3)+(a/4)+……………+(a/n)之和

uplii1fm  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(367)

我正在尝试解决这个程序,它可以打印:(a/1)+(a/2)+(a/3)+(a/4)+……………+(a/n)的和,其中a由用户输入,n的限制也由用户输入这是我尝试的程序:

/**
 * Program to 
 * 
 * Anirudh Gupta
 * th August 2014
 */
import java.io.*;
public class Program87b
{
   public static void main () throws IOException
   {
       InputStreamReader isr=new InputStreamReader(System.in);
       BufferedReader br= new BufferedReader(isr);
       System.out.println("Enter the value of the numerator");
       double a=Double.parseDouble(br.readLine());
       System.out.println("Enter the limit for the denominator");
       int limit=Integer.parseInt(br.readLine());
       double n=1.0;
       double sum=0.0;
       while(n<=limit)
       {
           sum=+(a/n);
           n++;
       }
       System.out.println(sum);
   }
}

但是当我输入a=4和n=5时,我得到0.8,这只是(4/5)的ans,而不是(4/1)+(4/2)+(4/3)+(4/4)+(4/5)的和,应该是9.133333333。。。

1cosmwyk

1cosmwyk1#

你的序列看起来很像调和级数 a*Hn 如果精度不是问题,您可能需要使用近似值

5tmbdcev

5tmbdcev2#

change=+到+=我不确定变量'd'来自何处,但我认为应该用'n'替换它

public static void main () throws IOException
   {
       InputStreamReader isr=new InputStreamReader(System.in);
       BufferedReader br= new BufferedReader(isr);

       System.out.println("Enter the value of the numerator");
       double a=Double.parseDouble(br.readLine());

       System.out.println("Enter the limit for the denominator");
       int limit=Integer.parseInt(br.readLine());

       double n=1.0;
       double sum=0.0;

       while(n<=limit)
       {
           sum+=(a/n);
           n++;
       }

       System.out.println(sum);
   }
exdqitrt

exdqitrt3#

这就给出了您的预期输出:

import java.io.*;
public class Sum
{
   public static void main(String[] args) throws IOException
   {
       InputStreamReader isr=new InputStreamReader(System.in);
       BufferedReader br= new BufferedReader(isr);
       System.out.println("Enter the value of the numerator");
       double a=Double.parseDouble(br.readLine());
       System.out.println("Enter the limit for the denominator");
       int limit=Integer.parseInt(br.readLine());
       double n=1.0;
       double sum=0.0;
       while(n<=limit)
       {
           sum+=(a/n);
           n++;
       }
       System.out.println(sum);
   }
}
lyr7nygr

lyr7nygr4#

你的错误来自这条线 sum =+ (a/n); ,应该是 sum += (a/n); . 另外,您还有一些不需要的额外变量,因此我会将您的代码修改为类似以下内容:

public static void main () throws IOException {
     BufferedReader br= new BufferedReader(new InputStreamReader(System.in));

     System.out.println("Enter the value of the numerator");
     double a=Double.parseDouble(br.readLine());

     System.out.println("Enter the limit for the denominator");
     int limit=Integer.parseInt(br.readLine());

     double sum = 0.0;
     for (int i = 1; i <= limit; i++) {
          sum += a / i;
     }

     System.out.println(sum);
}

注意:您也可以使用 java.util.Scanner 类而不是 java.io.BuferedReader 如果要使代码更具可读性:

public static void main () {

         Scanner in = new Scanner(System.in);

         System.out.println("Enter the value of the numerator");
         double a = in.nextDouble();

         System.out.println("Enter the limit for the denominator");
         int limit= in.nextInt();

         double sum = 0.0;
         for (int i = 1; i <= limit; i++) {
              sum += a / i;
         }

         System.out.println(sum);
    }

相关问题