2 回答
TA贡献1816条经验 获得超4个赞
您试图end
从静态方法中访问非静态变量winner()
,这是不正确的。要修复它,您可以将其设置为静态,或使其成为winner()
方法内的局部变量,因为您正在返回它。
TA贡献1847条经验 获得超7个赞
首先;
您不能从非静态方法中引用静态变量。要理解这一点,您需要了解静态和非静态之间的区别。
静态变量是类变量,它们属于类,只有一个实例,只在第一个创建。每次创建类的对象时都会初始化非静态变量。
在您的代码中,end
param 是非静态的。但是你是从你的静态方法调用这个参数的,它是winner(..)
. 你不能这样做。
在您的静态方法中,您试图返回字符串。全局变量end
param 将是winner
方法中的内部变量。所以像这样改变这段代码;
public static String winner(String weapon, String computerWeapon) {
String end = "";
if (weapon.equals("rock")) {
if (computerWeapon.equals("rock")) {
end = "Tie!";
} else if (computerWeapon.equals("scissors")) {
end = "Human wins!";
} else if (computerWeapon.equals("paper")) {
end = "Computer wins!";
}
} else if (weapon.equals("paper")) {
if (computerWeapon.equals("rock")) {
end = "Human wins!";
} else if (computerWeapon.equals("scissors")) {
end = "Computer wins!";
} else if (computerWeapon.equals("paper")) {
end = "Tie!";
}
} else if (weapon.equals("scissors")) {
if (computerWeapon.equals("rock")) {
end = "Computer wins!";
} else if (computerWeapon.equals("scissors")) {
end = "Tie!";
} else if (computerWeapon.equals("paper")) {
end = "Human wins!";
}
}
return end;
}
添加回答
举报