我正在使用jButtons作为正方形在NetBeans上创建一个Chess程序,我的java知识仅限于我在学校学到的东西。
所以这一行
int verticalValue = Integer.parseInt(newButton.substring(1,1));
返回nullPointerException,我无法弄明白。以下是相关代码:
static void pawnMovement(JButton but){
String buttonName = but.getName();
String newButton = buttonName;
int verticalValue = Integer.parseInt(newButton.substring(1,1));
所有按钮的名称都采用letterNumber格式,所以我不明白为什么这不起作用。
谢谢!
答案 0 :(得分:2)
此代码应该产生NumberFormatException,因为来自ValueError: DataFrame constructor not properly called!
的字符串将始终为空,除非newButton为substring(1, 1)
,因为它尚未设置。
我会检查已设置的调试器。我还要确保你试图解析至少1个字符。
答案 1 :(得分:1)
当您执行new JButton("name")
时,它会将变量JButton.text
设置为name
。因此,but.getText()
应该适合您。
在您的情况下,but.getName()
会返回NULL
,因为您尚未先完成but.setName()
。 but.setName()
需要but.getName()
才能正常工作。
因此,buttonName
& newButton
是NULL
。
因此,当您执行newButton.substring(1,1)
时,它会导致NPE,因为newButton
为NULL