gpt4 book ai didi

java - 为什么这段 Java 代码会抛出 NumberFormatException?

转载 作者:行者123 更新时间:2023-12-01 17:34:09 26 4
gpt4 key购买 nike

我正在使用一个 GUI 数独解算器,它使用 JTextFields (gridArray) 数组进行显示,并使用 int 数组 ( sudokuGrid)用于实际求解。当我运行它并尝试将 JTextField string 转换为 int 时,它会抛出 NumberFormatExceptionstring 解析为 int,特别是此消息:

java.lang.NumberFormatException: For input string: ""

这是给我带来麻烦的代码部分:

// create solveButton
solveButton = new JButton("Solve It!");
solveButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
// create grid and call Solve()
for(int i=0;i<9;i++) {
for(int j=0;j<9;j++) {
if (gridArray[i][j].getText() == "")
{sudokuGrid[i][j] = 0;}
else {sudokuGrid[i][j] = Integer.parseInt(gridArray[i][j].getText());}
}
} // end for loop

Solver(sudokuGrid);

// display solution
for(int i=0;i<9;i++) {
for(int j=0;j<9;j++) {
gridArray[i][j].setText(String.valueOf(sudokuGrid[i][j]));
}
} // end for loop
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(mainFrame,e.toString(),"Number Format Exception",JOptionPane.ERROR_MESSAGE);
} catch (Exception e) {
JOptionPane.showMessageDialog(mainFrame,"Sorry, something broke, try again.","Solve Error",JOptionPane.ERROR_MESSAGE);
} // end try-catch
} // end actionPerformed()
}); // end solveButton ActionListener

我认为 if-else 会捕获空字段,并且仅在存在值时才尝试 parseInt,但是如果任何人都可以启发我,我将不胜感激。

最佳答案

您的问题在这里:

  if (gridArray[i][j].getText() == "")

你不能那样比较字符串。这样做:

if (gridArray[i][j].getText().equals("")) 

关于java - 为什么这段 Java 代码会抛出 NumberFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8084612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com