2015-06-12 35 views
-3

我對Java很新,正在做一個簡單的應用程序。它由兩個類組成,分別爲ComputerPlayer。在Player中,我提示用戶猜測一個五位數的字符串。在Computer,我實例化Player類像這樣:在Java中,我如何操作從另一個類實例化的變量?

Player number = new Player(); 
number.getGuess(); 

接下來,我創建了一個循環來檢查電腦和球員的號碼相匹配。爲了做到這一點,我需要將玩家號碼的五位數字變成一個整數。爲什麼不讓Java讓我這樣做:

int playerdigit = Integer.parseInt(number.substring(i,i+1)); 

它不斷給我的方法.substring沒有定義的錯誤。 我該怎麼做?任何幫助表示讚賞!

+0

您可以發佈迄今爲止您嘗試過的代碼的相關部分嗎? –

+0

什麼是「號碼」? –

回答

0

這是因爲您正試圖訪問substringString類的方法)。在您向我們展示的代碼中,您嘗試訪問您的課程Player中的方法,請參考方法子字符串(類別String,如上所述),並且您應該參考Player中的某個String 。也許它可能是,假設你的Player類有球員的名字,並在比賽中(這是一個例子)的數量,就像這樣:

public class Player 
{ 
    int numPlayer; 
    String name; 
} 

,並用你的方法GETSET這個屬性:

public void setNumPlayer(int numPlayer) 
{ 
    this.numPlayer = numPlayer; 
} 

public int getNumPlayer() 
{ 
    return numPlayer; 
} 

public void setName(String name) 
{ 
    this.name = name; 
} 

public String getName() 
{ 
    return name; 
} 

你應該參考GET方法,返回你的String,然後你就可以使用String類的substring方法。事情是這樣的:

int playerdigit = Integer.parseInt(number.getName().substring(i,i+1)); 

而且,我看到你正試圖使:

number.getGuess(); 

也許你正在嘗試(我不知道)這是獲得StringgetGuess方法。那麼你應該這樣做:

String guess = number.getGuess(); 

存儲您String的價值。

後,您將能夠使子:

int playerdigit = Integer.parseInt(guess.substring(i,i+1)); 

我希望它可以幫助你!

+0

非常感謝!這有很大幫助。 –

2

想必您的Player班沒有方法substring。也許你錯過了一些像number.getMyStringMember().substring(i,i+1)這樣的電話?

1

'substring'方法是String類的非靜態方法(非靜態是指您使用類的實例調用方法而不是使用類名稱本身)。因此,您希望以以下格式調用此方法: some_string.substring(start_index, end_index),請記住結束索引不包含在內。在你的情況下,你試圖調用播放器對象的子串方法(因爲你的'數字'變量綁定到播放器對象,並且播放器類沒有子串方法)。相反,你應該做到以下(其中具有更好的命名約定,以及因爲「數字」並不是指玩家對象):

Player p = new Player(); 
String number = p.getGuess(); 

然後,在你的循環,你可以這樣做:

Integer.parseInt(number.substring(i,i+1)); 

並用您的計算機的生成號碼單獨檢查每個數字。

希望這會有所幫助!

+0

很好的解釋 – bkmoney

+1

我認爲你的潛意識在你自己身上造成了假。 'number'應該是一個'String',對嗎? –

相關問題