.substring()抛出nullPointerException

时间:2018-04-24 17:32:24

标签: java

我正在使用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格式,所以我不明白为什么这不起作用。

谢谢!

2 个答案:

答案 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& newButtonNULL

因此,当您执行newButton.substring(1,1)时,它会导致NPE,因为newButtonNULL