2014-01-07 140 views
-3

我需要解析標籤的值,以便它可以被存儲爲整數從Java字符串轉換爲int

JLabel lblSeatNo; 
int seatNo; 

seatNo = Integer.parseInt(lblSeatNo.getText()); 

它工作,我有方法使用的其他時間,但現在我得到一個數字格式異常,我不明白爲什麼。

如果與標籤可以改變的值會有所幫助,它的一般格式是這樣的:「A131」或「B504」

三江源。

+0

你會如何轉換'A131'到'int'? –

+0

A131或B504都不是有效數字! – gtgaxiola

+3

如果您想將它們解析爲十六進制數字,只需精確基數。 'Integer.parseInt(lblSeatNo.getText(),16);',否則它將使用默認的基數爲10. –

回答

3

假設你想這是一個十六進制數字(即基數爲16),則必須提供基數,以您的通話parseInt - 如果你想十進制值

seatNo = Integer.parseInt(lblSeatNo.getText(), 16); 

(如基地10),並跳過信,你可以做

seatNo = Integer.parseInt(lblSeatNo.getText().substring(1)); 
+0

赫克號碼以十六進制數值坐席的人是誰? –

+0

@ W.K.S正如他們在España所說的那樣;闕? –

+0

座位號不意味着是十六進制,他們的意思是留作「A103」或其他任何,這些數據將被存儲在一個航班預訂對象存儲在一個LinkedList中,即時通訊想知道是否將座位號存儲在一個int是代表我的講座出現錯誤。 – Sqoh

1

嘗試int value = Integer.parseInt(hexString, 16);如果你知道字符串表示將永遠是十六進制。您可能還想檢查相關方法的documentation

1

取決於你想要什麼: 如果你只想解析數字(不包括a,b等),那麼你必須調用substring來移除該字母。 如果這封信是爲了在那裏爲十六進制數,那麼你可以撥打

的Integer.parseInt(hexNo,16)

0

從您的意見好像你想從座位標籤只提取數。但既然你說你還需要重新創建座位標籤,然後在你的對象中,你可能還想爲row添加一個字符串,其中包含字母

所以你可以做這樣的事情(假設只有一個信)

int seatNo = Integer.parseInt(lblSeatNo.getText().substring(1)); 
String row = lblSeatNo.getText().subString(0,1); 

然後,以獲取標籤再次

String label = row + seatNo;