2016-09-20 41 views
0
import java.util.Scanner; 

class player_test { 
    public static void main(String[] args) { 

    Scanner s_in = new Scanner(System.in); 
    Scanner i_in = new Scanner(System.in); 

    class player { 

     String player_name; 
     String player_class; 
     String player_race; 
     int player_STR = 10; 
     int player_DEX; 
     int player_CON; 
     int player_WIS; 
     int player_INT; 
     int player_CHA; 

    } 

    int tempDex = new player(player_STR); 
    System.out.println(tempDex); 

    } 
} 

好的,所以我對Java很新,我認爲這比我做的更基本。所以我有對象玩家,它將玩家的核心數據存儲在其中,但是如何在整個代碼中的其他位置調用這些變量?至少讓它打印出球員的實力得分?試圖打印存儲在另一個對象中的變量java

+0

你可以做'的System.out.println(tempDex。 player_STR);'或者使用你的IDE向'Player'添加'toString()'方法,因爲你不需要在所有字段名稱中添加'player_'。 –

+0

你應該嘗試爲類和'camelCase'使用'PascalCase'作爲變量/屬性/函數名稱。當然,這是一種文體選擇,但這往往是命名事物最常見的方式。 –

+0

小心:int tempDex =新玩家(player_STR);你將一個玩家類分配給一個int類型 –

回答

1

因爲在課堂上播放器的所有變量是非靜態的,所以你需要創建這個類的對象來訪問它的非靜態數據成員。

int tempDex=new player(player_STR); //this will generate compilation error 

在這裏,你正在創建球員的對象class.so你應該保持球員類型的tempDex(可超類也是如此)。 其次,你正在使用的不是在class.So定義正確的方式做到這一點是這樣一個參數的構造函數.....

player tempDex=new player(); // an Object of class player is created 
System.out.println(tempDex.player_STR); 
System.out.println(tempDex.player_Name); 
// and so on. 
2

最好的做法是創建公開方法,以公開您的對象的內部狀態,這些狀態應該可以從其他類中看到並留下不應該被其他類使用的不可見信息。

一般這些方法被稱爲getter和使用的語法如下:

public String getPlayer_name() { 
    return player_name; 
} 

然後在第二類中,你可以打印得很乾脆:

// is a best practice to start class names with uppercase 
Player x = new Player(); 

... // Do something 

System.out.println(x.getPlayer_name());