我需要解析标签的值,以便它可以存储为Integer
JLabel lblSeatNo;
int seatNo;
seatNo = Integer.parseInt(lblSeatNo.getText());
我已经使用过其他方法,但是现在我得到了一个数字格式异常,我不明白为什么。
如果它有助于标签的价值可以变化,它的一般格式是:“A131”或“B504”
三江源。
答案 0 :(得分:3)
假设您希望将其作为十六进制数字(即16号基数),则必须为parseInt调用提供基数 -
seatNo = Integer.parseInt(lblSeatNo.getText(), 16);
如果你想要小数值(例如10号)并跳过这个字母,你可以做
seatNo = Integer.parseInt(lblSeatNo.getText().substring(1));
答案 1 :(得分:1)
如果您知道字符串表示将始终为十六进制,请尝试int value = Integer.parseInt(hexString, 16);
。您可能还想检查相关方法的documentation。
答案 2 :(得分:1)
取决于你想要的东西: 如果你只想解析数字(不包括a,b等),那么你必须调用substring来删除这个字母。 如果这封信是作为十六进制数字出现的那么你可以打电话给
Integer.parseInt(hexNo,16)
答案 3 :(得分:0)
答案 4 :(得分:0)
从您的评论中,您似乎只想从Seat标签中提取数字。但既然你说你还需要重新创建座位标签然后在你的对象中你可能还想为row
添加一个包含字母的字符串
所以你可以做这样的事情(假设只有一个字母)
int seatNo = Integer.parseInt(lblSeatNo.getText().substring(1));
String row = lblSeatNo.getText().subString(0,1);
然后再次获得标签
String label = row + seatNo;