如何调用主要方法中的非静态方法
问题描述:
即时通讯设法做一个程序,用户输入一个数字和控制台是斐波那契数字。我很难找出为什么像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));
}
}
答
你必须创建你的类的一个对象。然后使用main方法中的对象(静态)调用该方法。
fibonacci fib = new fibonacci();
fib.fibonacci(input);
答
实例化你的主斐波那契类。
fibonacci f = new fibonacci();
f.fibonacci(input);
另外,你的类(和文件)应该被命名为Fibonacci。类名始终有首字母大写。
你的方法'public int fibonacci(int input)'应该被命名为别的东西。唯一应该与你的类名称相同的方法是构造函数。你的变量'f1','f2'和'answer'应该在你的方法内部声明,他们没有理由成为实例变量。并且从fibonacci类的顶部删除'input'和'fnumber'的声明,它们不会被使用。 – Flaom
我也会看看其他一些东西。当你在'for'循环中说'int answer'时,这是一个新变量(而不是你班上的字段)。当你在'for'循环中返回_'''_sideside'时,你将返回在循环中没有被修改过的字段(具有相同的名字)。在'for'循环的开头中与'int f2 = 1;'声明一样。 – user2478398
而在你的for循环中,你正在初始化另一个'answer'变量,它在被初始化后永远不会被使用。从for循环中的'answer'中移除'int'类型说明符。 – Flaom