我正在尝试解决这个程序,它可以打印:(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。。。
4条答案
按热度按时间1cosmwyk1#
你的序列看起来很像调和级数
a*Hn
如果精度不是问题,您可能需要使用近似值5tmbdcev2#
change=+到+=我不确定变量'd'来自何处,但我认为应该用'n'替换它
exdqitrt3#
这就给出了您的预期输出:
lyr7nygr4#
你的错误来自这条线
sum =+ (a/n);
,应该是sum += (a/n);
. 另外,您还有一些不需要的额外变量,因此我会将您的代码修改为类似以下内容:注意:您也可以使用
java.util.Scanner
类而不是java.io.BuferedReader
如果要使代码更具可读性: