当我编译测试器时,它在第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);
}
}
答案 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
声明为静态。