gpt4 book ai didi

java - if 语句中出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-01 13:29:43 26 4
gpt4 key购买 nike

我正在尝试将表内的槽与变量 f 进行比较,以查看是否存在重复或槽是否为空。

它符合要求,但最终给了我一个 NullPointerException

这是我的代码,问题用 //this one 标记

import java.awt.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class Journal extends JPanel
{
public Journal()
{
String colN1 = "Date";
String colN2 = "Student";
int a = 20;
int b = 5;
int c = a*2/b;
int col = c*2;
String[] columnNames = new String[col];
for(int colF = 0; colF < col; colF++)
{
if(colF%2 == 0)
{
columnNames[colF] = colN1;
}
else
{
columnNames[colF] = colN2;
}
}
int row = b;
int d = 1;
Object[][] data = new Object[row][col];
for (int row1 = 0; row1 < data.length; row1++)
{
for (int col1 = 0; col1<data[0].length; col1++)
{
if(col1%2 != 0)
{
data[row1][col1]= "day" + d;
d++;
}
else
{
Integer f = new Integer(1);
int col2 = 0;
int row3 = 0;
boolean rows;
for (int row2 = 0; row2 < data.length; row2++)
{
if(data[row2][col2].equals(null))//this one
{
rows = true;
}
else if(data[row2][col2].equals(f))//this one
{
rows = false;
}
else
{
rows = true;
}
col2++;
if(col2 >= col)
{
col2 = 0;
}

for (int col3 = 0; col3<data[0].length; col3++)
{
if(f > a)
{
f = 1;
}
else if(rows == true && data[row3][col3].equals(f))//this oen
{
data[row3][col3]= f;
}
f++;
row3++;
if(row3 >= row)
{
row3 = 0;
}
}
}
}
}
}
JTable table = new JTable(data, columnNames)
{
public Class getColumnClass(int column)
{
for (int row4 = 0; row4 < getRowCount(); row4++)
{
Object o = getValueAt(row4, column);

if (o != null)
return o.getClass();
}
return Object.class;
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane(table);
add(scrollPane);
}
private static void gui()
{
JFrame gui = new JFrame();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setTitle("Journal List");
gui.setSize(700,200);
gui.setLocationRelativeTo(null);
gui.setVisible(true);
gui.add(new Journal());
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
gui();
}
});
}
}

最佳答案

如果 x 可能为 null,则无法调用 x.equals(y),因为取消引用 x > 在这种情况下会抛出一个 NullPointerExceptionx.equals(null) 不再有效。

您想要的可能更像是这样:

if((x == null && f == null) || (x != null && f != null && x.equals(f)))

最好可以将其抽象为辅助函数:

public static boolean equals(Object a, Object b) {
if(a == null)
return(b == null);
else
return((b != null) && a.equals(b));
}

然后,您可以简单地调用 if(equals(data[row2][col2], f)),并在其他类似的地方重用它。

关于java - if 语句中出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642143/

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