Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这种方法有什么问题?(2)_Java_For Loop - Fatal编程技术网

Java 这种方法有什么问题?(2)

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 =

我不太确定我错在哪里。我需要对系列的前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 = 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