java中的指数增长,返回型双倍数组
我正在做一个CS作业,我有点难以理解如何在给定用户指定的增长率的情况下,以时间增量输出一系列表示银行账户中的金额的双倍。我有一个主要方法,要求用户输入initialAmount of$、growthRate和时间间隔数(用iA、gR和nP表示初始金额、增长率和周期数)。然后,该方法调用另一个返回类型为double[]的方法。我的问题是for循环中的代码,它编译得很好,但输出的却是胡言乱语。代码如下:
import java.util.Scanner;
public class Benford {
public static double[] generateBenfordNumbers (double iA, double gR, int nP) {
double[] bankStatement = new double[nP];
for (int i = 0; i<nP; i++) {
bankStatement[i] = (iA*(Math.pow((1+(gR)), (i++))));
}
return bankStatement;
}
public static void main (String[] args) {
Scanner scan = new Scanner(System.in);
double iA;
double gR;
int nP;
System.out.print("What is the initial amount of money that you are starting with? : ");
iA = scan.nextDouble();
System.out.println();
System.out.print("What is the amount of growth per time period? : ");
gR = scan.nextDouble();
System.out.println();
System.out.print("How many time periods would you like to use? : ");
nP = scan.nextInt();
System.out.println();
generateBenfordNumbers(iA, gR, nP);
System.out.print(generateBenfordNumbers(iA, gR, nP));
}
}
# 1 楼答案
乱七八糟的输出如下所示:
这是一种双数组文本表示法。你可以使用:
# 2 楼答案
i增加两次:在循环级别和进入身体
# 3 楼答案
排队
i++
第二次增加i
。你可能想要:或者,如果我们把它清理干净
i + 1
返回一个大于i
的值1,但实际上并不增加变量本身还有,你真的每次都要使用
Math.pow
?您不能手动将数组的第一个元素设置为iA
,然后使用bankStatement[i-1]
来计算bankStatement[i]
吗?这样做可能会改善你的程序# 4 楼答案
你不应该在数学课上增加i。战俘。这是因为您已经在for循环中增加了它。结果是数组中的元素被跳过而没有设置。这可能就是胡言乱语的来源
你可能想要改变:
致:
另外,顺便说一句,你一般不应该使用这么多的括号,因为它使阅读变得困难。如果你不确定操作的顺序,look it up
# 5 楼答案
正如其他人所说,你将i增加了两次,所以我不会重复。我只想补充一点,方括号可以很好地组织公式,确保计算的正确执行顺序,但如果您过度使用它们,它们可能会混淆程序的意图,并且可能会使您寻找的问题更难发现。比较
与
明白我的意思吗
编辑-在关于i的初始值的非常有效的注释之后,我更改了清理语句