Java 这种方法有什么问题?(2)
我不太确定我错在哪里。我需要对系列的前16个元素求和:1、3、9、27、81。。。。使用方法Java 这种方法有什么问题?(2),java,for-loop,Java,For Loop,我不太确定我错在哪里。我需要对系列的前16个元素求和:1、3、9、27、81。。。。使用方法total代码通过创建一个典型的Geometric1实例来实现 total方法打印值7174454.0,但我应该得到21523360 public class Geometric1 implements Seq{ private double b; public static double result = 0.0; public Geometric1(double b) { this.b =
total
代码通过创建一个典型的Geometric1
实例来实现
total
方法打印值7174454.0,但我应该得到21523360
public class Geometric1 implements Seq{
private double b;
public static double result = 0.0;
public Geometric1(double b) {
this.b = b;
}
public double valAtIndex(int i) {
// TODO Auto-generated method stub
return Math.pow(b, i);
}
public static double total() {
Seq s = new Geometric(3.0);
for (int i = 0; i < 15; i++) {
result += s.valAtIndex(i);
}
return result;
}
public static void main(String[] args) {
System.out.println(total());}
}
public类实现Seq{
私人双b;
公共静态双结果=0.0;
公共图书馆C1(双b){
这个.b=b;
}
公共双价指数(国际一){
//TODO自动生成的方法存根
返回Math.pow(b,i);
}
公共静态双倍总计(){
Seq s=新几何图形(3.0);
对于(int i=0;i<15;i++){
结果+=s.valAtIndex(i);
}
返回结果;
}
公共静态void main(字符串[]args){
System.out.println(total();}
}
你很接近了。你只需要调整你的循环运行16次
将结果初始化为0
(您已多次编辑文章),并按如下方式更改循环:
for (int i = 0; i <= 15; i++) {
result += s.valAtIndex(i);
}
for(int i=0;i应该是i 3^14是4782969。这与较低的数字相结合可能会导致您的数字过大。除了将“result”伪赋值给静态变量之外(尝试将其作为局部变量,方法是将结果赋值为1,并将循环的边界调整为1->16(因为您需要前16个值)),我看不出这段代码有太多问题。你实际上并没有得到那个级数,而是把3^I的级数从I=0加到I=15。我用Math.pow
来计算Seq s=new Geometric(3.0);
3.0的幂i
然后将所有的值相加。我知道有更简单的方法来计算,但问题是我不需要使用Seq s=new Geometric(3.0);
3^14本身就很大,你得到了什么?我得到了7174454.0,但我应该得到21523360