你好,我是Java的初学者,我有一个关于迭代总结的问题。问题是:编写一个程序,计算以下表达式到4位小数: (1/10)+(2/9)+(3/8)+(4/7)+(5/6)+(6/5)+(7/4)+(8/3)+(9 / 2)+(10/1)
到目前为止,我有:
public class Expression
{
public static void main(String[] args)
{
float x;
for ( float m=1, n=10; m<11; m++,n--)
{
x = (m)/(n);
}
我如何总结for循环所做的所有迭代?
谢谢大家:)
答案 0 :(得分:2)
public class Expression
{
public static void main(String[] args)
{
float x = 0;
for ( float m=1, n=10; m<11; m++,n--)
{
x += (m)/(n);
}
System.out.println(x);
}
}
答案 1 :(得分:1)
好的代码,我到目前为止都喜欢它!
循环中需要一个变量:sum = sum + x;
或更短sum += x;
。在循环之前用float sum = 0;
定义它。
您也可以直接使用x并将其定义为0,但编译器无论如何都会优化它,因此没有速度增益。
答案 2 :(得分:1)
+=
运算符。 x += y
相当于x = x + y
。在您的情况下,您将获得x += (m)/(n)
,最终产生:
public class Expression {
public static void main(String[] args) {
float x = 0;
for ( float m=1, n=10; m<11; m++,n--) {
x += (m)/(n);
}
}
}
答案 3 :(得分:1)
更改
x = (m)/(n);
到
x += (m)/(n);
由于x
已经在循环之外的范围内,因此可以执行此操作,并且x
将在迭代之间保持不变。不过我建议更改循环:
float x=0;
for ( float m=1; m<11; m++)
{
x += (m)/(11-m);
}
将来阅读可能会更直接。