[英]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的方法。 該物體在S值方法內values.java最初宣布。 我想將方法開始調用為play.java的主要方法 ,但是我不確定在調用的參數中要寫些什么。
內部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
錯誤出現在:start(player, stats ); 找不到標志。 符號:可變統計信息。 地點:上課玩。
當我在使用netbeans時將鼠標懸停在“統計信息”上時,會出現此錯誤。
主要方法是程序的入口點。 您尚未實例化任何其他內容,因此沒有對象可傳遞到start方法中。
您可能需要給我們更多的代碼,但是您可能需要先嘗試類似的方法-而我正在對您的代碼做出很多假設
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
類中,您具有sValues
方法,該方法可以按照您所說的創建敵人,但是您在該方法中創建的stats[]
僅具有該方法的范圍,因此當該方法完成時,您創建的敵人現在消失了。
您也有很多靜態參考-這是不正確的做法,您需要盡可能多地刪除它。 為此,您可以更改類似
Values.sValues();
至
Values v = new Values(); // in the constructor call what you need to
v.sValues();
您需要考慮將敵人統計數據存儲在何處。 您可以將其移至Values
類的頂部,並為其添加一個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;
}
播放.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());
}
在我看來,您必須創建一個values.java實例,然后從那里獲取player和stats對象,然后傳遞給main方法。 在play.java類中聲明播放器的狀態在哪里?
嘗試:
{
player player = new player();
stats[] stats = new stats[5];
start(player, stats);
} //main method
並用所需的值初始化stats數組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.