2017-10-12 108 views
-3

即时通讯设法做一个程序,用户输入一个数字和控制台是斐波那契数字。我很难找出为什么像fibbonaci纤维=新斐波那契正在停止我的计划。当编译器读取该行时,代码将停止运行。如何调用主要方法中的非静态方法

编辑:非常感谢答案的家伙,但我仍然无法理解。可能somone请重写代码,以便纠正错误?谢谢!

编辑:我想通了,感谢所有的帮助!

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)); 
    } 
} 
+0

你的方法'public int fibonacci(int input)'应该被命名为别的东西。唯一应该与你的类名称相同的方法是构造函数。你的变量'f1','f2'和'answer'应该在你的方法内部声明,他们没有理由成为实例变量。并且从fibonacci类的顶部删除'input'和'fnumber'的声明,它们不会被使用。 – Flaom

+0

我也会看看其他一些东西。当你在'for'循环中说'int answer'时,这是一个新变量(而不是你班上的字段)。当你在'for'循环中返回_'''_sideside'时,你将返回在循环中没有被修改过的字段(具有相同的名字)。在'for'循环的开头中与'int f2 = 1;'声明一样。 – user2478398

+0

而在你的for循环中,你正在初始化另一个'answer'变量,它在被初始化后永远不会被使用。从for循环中的'answer'中移除'int'类型说明符。 – Flaom

回答

0

你必须创建你的类的一个对象。然后使用main方法中的对象(静态)调用该方法。

fibonacci fib = new fibonacci(); 
fib.fibonacci(input); 
0

实例化你的主斐波那契类。

fibonacci f = new fibonacci(); 
f.fibonacci(input); 

另外,你的类(和文件)应该被命名为Fibonacci。类名始终有首字母大写。

相关问题