【发布时间】:2017-10-12 01:12:20
【问题描述】:
我试图制作一个程序,用户输入一个数字,控制台就是那个斐波那契数字。我无法弄清楚为什么喜欢 fibbonaci fib = new fibonacci 正在停止我的程序。当计算机读取该行时,代码会停止运行。
编辑:非常感谢大家的回答,但我仍然无法理解。有人可以重写代码以修复错误吗?谢谢!
编辑:我想通了,谢谢大家的帮助!
import java.util.Scanner;
public class fibonacci {
Scanner fnumber = new Scanner (System.in);
int input = fnumber.nextInt();
int f1 = 1;
int f2 = 1;
int answer = f1 + f2;
public int fibonacci( int input) {
for(int f2 = 1; f2<input; f2++ ) {
int answer = f1 + f2;
f1 = f2;
f2 = f2 + 1;
}
return answer;
}
public static void main(String args[]){
System.out.println("please enter a number");
Scanner fnumber = new Scanner (System.in);
int input = fnumber.nextInt();
System.out.println("The " + input + "th number of the fibonacci sequence is " + fib.fibonacci(input));
}
}
【问题讨论】:
-
你的方法
public int fibonacci(int input)应该被命名为别的名字。唯一应该与您的类同名的方法是构造函数。您的变量f1、f2和answer也应该在您的方法中声明,它们没有理由成为实例变量。并从你的斐波那契类的顶部删除input和fnumber的声明,它们没有被使用。 -
我也会看看其他一些东西。当您在
for循环中说int answerin 时,这是一个新变量(不是您类中的字段)。当您return answeroutsidefor循环时,您将返回未在循环内修改的字段(具有相同名称)。与for循环开头的int f2 = 1;声明相同。 -
在 for 循环中,您正在初始化另一个
answer变量,该变量在初始化后从未使用过。从 for 循环内的answer中删除int类型说明符。
标签: java for-loop methods static-methods non-static