簡體   English   中英

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的方法。 該物體在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM