非静态方法towersOfHanoi(int,int,int,int)不能从静态上下文中引用?

时间:2014-03-10 04:41:10

标签: java recursion methods static towers-of-hanoi

当我编译测试器时,它在第9行说:

非静态方法towersOfHanoi(int,int,int,int)不能从静态上下文引用

为什么它无法到达塔楼的河内方法?

我在下面提供了两个课程。

import java.io.*;
import java.util.*;
public class Tester
{
    public static void main(String args[])
    {
        Scanner swag = new Scanner(System.in);
        int yolo = swag.nextInt();
        TowersOfHanoi.towersOfHanoi(yolo,1,3,2);
    }
}
public class TowersOfHanoi
{
    public void towersOfHanoi (int N, int from, int to, int spare)
    {
        if(N== 1) 
        {
            moveOne(from, to);
        }
        else 
        {
            towersOfHanoi(N-1, from, spare, to);
            moveOne(from, to);
            towersOfHanoi(N-1, spare, to, from);
        }
    }  

    private void moveOne(int from, int to)
    {
        System.out.println(from + " ---> " + to);
    }
}

2 个答案:

答案 0 :(得分:0)

制作TowersOfHanoi.towersOfHanoi(int,int,int,int)方法静态

public static void towersOfHanoi (int N, int from, int to, int spare)
{

或更好,

实例化一个TowersOfHanoi对象,然后调用towersOfHanoi方法,而不是像你一样在类上调用它。

答案 1 :(得分:0)

问题在于这一行

TowersOfHanoi.towersOfHanoi(yolo,1,3,2);

要么创建TowersOfHanoi的对象并在其上调用方法,要么将方法TowersOfHanoi.towersOfHanoi声明为静态。