java - 如何打印方法中定义的变量?

标签 java eclipse scope

public class Program {

    public static void main(String[] args) {
        int lastFibo = 1;  // ADDED TO check if last fib calculated is over 4000000
        for (int i = 3; lastFibo <= 4000000; i = i + (i - 1)) {
            lastFibo = fibo(i);
        }
    }

    public static int fibo(int i) {
        int total = 0;
        if (i % 2 == 0) {
            total += i;
            return total;
        }
        return total;
    }
}

此代码的目的是打印斐波那契数列中小于 400 万的偶数之和。使用递归,代码会返回堆栈溢出错误,因此建议迭代数字。遇到的困难是知道如何打印“total”变量。范围文章非常基础,创建 static int Total = 0返回 0

最佳答案

首先,正如一些评论所指出的:您的 for 循环不会迭代斐波那契数列。其次,变量 total 仅存在于 fibo 方法的范围内。因此,每次调用该方法时,total 都会以值 0 开头。

使用正确的斐波那契算法,将fibo方法的返回值相加计算总和:

public class Program {

    public static void main(String[] args) {
        int total = 0;
        int previousValue = 0;
        int currentValue = 1;
        while (currentValue < 4_000_000) {
            int nextPreviousValue = currentValue;
            currentValue += previousValue;
            previousValue = nextPreviousValue;
            total += fibo(currentValue);
        }
        System.out.println(total);
    }

    public static int fibo(int i) {
        if (i % 2 == 0) {
            return i;
        }
        return 0;
    }
}

4_000_000 是一个整数文字,从 Java 7 开始就可以使用数字 4000000。下划线的目的是为了使其更好地被人类阅读。以编程方式来说,与使用 4000000 没有区别。有关详细信息,请参阅 Primitive Data Types在 Java 教程中。

关于java - 如何打印方法中定义的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31355960/

相关文章:

java - 我的方法被调用,但它不画线

java - 使用枚举静态变量创建了多少个副本

java - 缺少通用类类型的导入建议

c++ - C++ 子类是否可以共享相同的模板?

javascript - 为什么一个变量在 IIFE 之外是未定义的,而另一个不是?

java - 与restTemplate 集成测试侦探

java - 我想在 Linux shell 中通过 Java 执行的一个命令有问题

python - 有没有办法使用 pydev 调试子进程?

java - 在 IntelliJ 中浏览自动完成选项时查看完整的 javadoc

javascript - 当 HTMLElement.onclick 事件调用时,在其函数中获取对象的属性 - javascript