Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在主方法内部调用第二个类中的方法,以在Java中执行操作?_Java_Class_Methods - Fatal编程技术网

如何在主方法内部调用第二个类中的方法,以在Java中执行操作?

如何在主方法内部调用第二个类中的方法,以在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

我正在用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 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)中的变量。