如何在主方法内部调用第二个类中的方法,以在Java中执行操作?
我正在用Java构建一个交互式小说游戏,但是在主类中使用第二个类时遇到了问题。我正在使用Eclipse。 这是我的主要课程:如何在主方法内部调用第二个类中的方法,以在Java中执行操作?,java,class,methods,Java,Class,Methods,我正在用Java构建一个交互式小说游戏,但是在主类中使用第二个类时遇到了问题。我正在使用Eclipse。 这是我的主要课程: import java.util.Scanner; import static java.lang.System.out; public class mainClass { public static void main(String[] args) { String cmdIF; Scanner input = new Sca
import java.util.Scanner;
import static java.lang.System.out;
public class mainClass {
public static void main(String[] args) {
String cmdIF;
Scanner input = new Scanner(System.in);
int x = 0;
int y = 0;
out.print("Welcome to the world! Which way do you want to go?");
String northD = "You walk into a forest.";
if(x=1) {
out.print(northD);
}
cmdIF = input.nextLine();
choosePath();
}
public void choosePath(actionClass cmdCenter) {
actionClass.cmdCenter();
}
}
以及包含该方法的类:
public class actionClass {
public void cmdCenter() {
if(cmdIF.equalsIgnoreCase("NORTH") || cmdIF.equalsIgnoreCase("GO NORTH")) { out.println(northD); x++; }
else if(cmdIF.equalsIgnoreCase("EAST") || cmdIF.equalsIgnoreCase("GO EAST")) { out.println(eastD); y++; }
else if(cmdIF.equalsIgnoreCase("SOUTH") || cmdIF.equalsIgnoreCase("GO SOUTH")) { out.println(southD); x--; }
else if(cmdIF.equalsIgnoreCase("WEST") || cmdIF.equalsIgnoreCase("GO WEST")) { out.println(westD); y--; }
else { out.println("You can't do that."); }
}
}
无论何时执行代码,都会出现以下错误:
线程“main”java.lang中出现异常。错误:未解析编译
问题:类型mainClass中的方法choosePath(actionClass)为
不适用于参数()
在mainClass.main(mainClass.java:14)
如何使这些方法协同工作?将actionClass
中的cmdCenter()
方法声明为:
public void cmdCenter(String cmdIF)
然后将选择路径()
更改为
public void choosePath(actionClass action, String cmdIf) {
action.cmdCenter(cmdIf);
}
显然,将
main()
方法的调用适当地更改为choosePath()
。您需要new
创建actionClass
的一个实例,以传递到choosePath()
,在第一步中,您可以这样访问该方法
actionClass.cmdCenter();
public static void cmdCenter
public static void cmdCenter(String cmdIF, int x, int y)
不是静态的
,所以只需像这样使cmdCenter
静态
actionClass.cmdCenter();
public static void cmdCenter
public static void cmdCenter(String cmdIF, int x, int y)
和choosePath()
有参数,所以您必须像这样使用它choosePath(actionClass)
,因为您在static
方法中使用它,所以您必须创建实例或使choosePath
static
public static void choosePath(actionClass)
但您不必从choosePath
//public void choosePath(actionClass cmdCenter) {
public static void choosePath()
似乎您也必须将x
和y
变量传递给cmdCenter
,因此它变成这样
actionClass.cmdCenter();
public static void cmdCenter
public static void cmdCenter(String cmdIF, int x, int y)
剩下的代码没问题
代码的固定版本:
public class Main {
static String cmdIF;
static int x = 0;
static int y = 0;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Welcome to the world! Which way do you want to go?");
String northD = "You walk into a forest.";
if(x ==1) {
System.out.print(northD);
}
cmdIF = input.nextLine();
choosePath();
}
public static void choosePath() {
actionClass.cmdCenter(cmdIF, x, y);
}
}
及
在main方法上,调用了
choosePath()
,没有任何参数。您定义的choosePath
方法实际上需要一个参数actionClass
,因此当您调用您的方法时,它必须是choosePath(actionClass)
。您运行的程序即使有编译错误。+jmpg我尝试使用choosePath(actionClass)
运行,但我得到了以下错误:线程“main”中的异常java.lang.Error:未解决的编译问题:actionClass无法解析为mainClass.main(mainClass.java:14)处的变量
Plus,“String cmdIF”是main方法的局部作用域,对actionClass的方法不可见,除非作为参数+paisanco传入,否则我可以修复它,如果它存在,编译器甚至会确认我想要调用该方法。”并且显然,将main()方法的调用更改为choosePath()适当地。您需要新建一个actionClass实例以传递到ChoosPath()。“-这到底是什么意思?我按照您的其他步骤使用了choosePath(actionClass),但仍然得到一个错误<代码>线程“main”java.lang中出现异常。错误:未解决的编译问题:actionClass无法解析为mainClass.main(mainClass.java:15)中的变量。