【问题标题】:how to call non-static methods in main method如何在主方法中调用非静态方法
【发布时间】: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) 应该被命名为别的名字。唯一应该与您的类同名的方法是构造函数。您的变量f1f2answer 也应该在您的方法中声明,它们没有理由成为实例变量。并从你的斐波那契类的顶部删除 inputfnumber 的声明,它们没有被使用。
  • 我也会看看其他一些东西。当您在for 循环中说int answer in 时,这是一个新变量(不是您类中的字段)。当您 return answer outside for 循环时,您将返回未在循环内修改的字段(具有相同名称)。与for 循环开头的int f2 = 1; 声明相同。
  • 在 for 循环中,您正在初始化另一个 answer 变量,该变量在初始化后从未使用过。从 for 循环内的 answer 中删除 int 类型说明符。

标签: java for-loop methods static-methods non-static


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在你的 main 中实例化斐波那契类。

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

    另外,你的类(和文件)应该命名为 Fibonacci。类名的首字母总是大写。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多