Java 调用带有对象参数的方法到 main 方法

Java calling a method with object parameters to main method

play.java: https://pastebin.com/4bzfE76z
values.java: https://pastebin.com/6mnUzKyA
player.java: https://pastebin.com/qiFymMF6
stats.java: https://pastebin.com/P24AUpXV

我在 play.java 中有一个名为 start 的方法,带有对象参数。这些对象最初是在 values.java 中的 sValues 方法中声明的。我想将方法​​ start 调用到 play.javamain 方法 但是我'我不确定在调用的参数中写什么。

里面values.java:

    player user = new player ();
    user.setP_Name (username);
    user.setP_ATK (atk);
    user.setP_HP (hp);

    stats[] enemies = new stats [3];
    enemies [1] = new stats ();
    enemies [1] = gob;
    enemies [1].getName ();
    enemies [1].getHP ();
    enemies [1].getATK ();
    enemies [1].getMANA ();
    enemies [2] = new stats ();
    enemies [2] = orc;
    enemies [2].getName ();
    enemies [2].getHP ();
    enemies [2].getATK ();
    enemies [2].getMANA ();

play.java 中,我使用这样的对象:

System.out.println ("Hitpoints[HP]: " + enemies [i].getHP ());

效果很好,因为我将这两个对象包含在方法的参数中:

public static void start (player user, stats[] enemies)

但是,每当我想在 main 方法 中调用 start 以使其执行我想要的操作时,它会给出我的错误。这就是我一直试图称呼它的方式:

public static void main (String[] args)
{ //main method
start(player, stats);
} //main method

我是不是做错了什么?任何帮助表示赞赏。如果需要,我很乐意添加更多信息。编码新手,不确定需要提供哪些具体细节。

我的错误:

{ //main method
    player player = new player();
    start(player, stats);
} //main method

错误:开始(播放器,stats); 找不到符号。符号:变量统计。地点:class玩.

使用 netbeans 时,当我将鼠标悬停在 "stats" 上时出现此错误。

在我看来,您必须创建 values.java 的实例,然后从那里获取播放器和统计对象以传递给主要方法。 play.java class?

中声明的玩家统计数据在哪里

尝试:

{
  player player = new player();
  stats[] stats = new stats[5];

  start(player, stats);
} //main method

并使用所需值初始化统计数组

main 方法是程序的入口点。您还没有实例化任何其他东西,因此没有对象要传递到您的启动方法。

您可能需要向我们提供更多您的代码,但您可能需要先尝试这样的操作 - 我对您的代码做出了很多假设

public static void main (String[] args)
{ //main method
    Player player = new Player(); // This is an instance of your Player class
    // and initialize your stats array.
    Values v = new Values();
    start(player, stats);
} //main method

同时提供您遇到的错误也可能有所帮助。

编辑

检查您的代码后,我发现了一些问题。在你的 Values class 中,你有方法 sValues 可以像你说的那样创建敌人,但是你在该方法中创建的敌人 stats[] 仅具有该方法的范围,所以当该方法完成时,你创建的敌人现在已经消失了。

您还有很多静态引用 - 这是不好的做法,您需要尽可能多地删除。为此,您可以更改

 Values.sValues();

 Values v = new Values(); // in the constructor call what you need to
 v.sValues();

您需要考虑要将敌人统计数组存储在何处。您可以将它移动到 Values class 的顶部并为其添加一个 getter 然后您的代码可能如下所示

Values.java

public class values {
    public static String clear = "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
    public static String username;
    public static int atk = 1;
    public static int hp = 10;

    private stats[] enemies;

 // .. your other code
public void sValues () // this method should not be static
{ //sValue method 
    // .. other code
    enemies = new stats [3];  // Remove the declaration at the start of this line
    // .. other code
}

public stats[] getEnemies()
{
    return enemies;
}

Play.java

public static void main (String[] args)
{
    // Create a player
    player player = new player("Steve", 10, 10);
    // Initialise your values
    Values v = new Values();
    // create the enemies (this could be done in your values constructor)
    v.sValues();
    // Start with these enemies
    start(player, v.getEnemies());
}