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.java 的 main 方法 但是我'我不确定在调用的参数中写什么。
里面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());
}
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.java 的 main 方法 但是我'我不确定在调用的参数中写什么。
里面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());
}