我的错误是:
Exception in thread "main" java.lang.NullPointerException
at ClienteDB.incluir(ClienteDB.java:30)
at ClienteInterface.main(ClienteInterface.java:16)
我刚刚检查了一些其他问题,但没有找到为什么会发生这种情况。 通常人们说有一些值为null的变量。在第一时刻,变量将为null,但我没有使用null进行赋值。
第30行是:c [npp] .setCpf(ccpf); 这是我的程序的一种方法,但唯一一种不起作用的方法。
提前感谢您的帮助!
import javax.swing.JOptionPane;
public class ClienteDB
{
Cliente c[]= new Cliente[11];
public void incluir() {
int flag = 0;
String np = JOptionPane
.showInputDialog("Entre a posição que você deseja incluir um usuário (1 a 10):");
int npp = Integer.parseInt(np);
if (c[npp] != null) {
JOptionPane.showMessageDialog(null,
"Já possui um cliente neste campo.");
} else {
String ccpf = JOptionPane.showInputDialog("Qual o cpf do cliente "
+ npp + "?");
for (int np2 = 1; np2 < 11; np2++) {
if ((c[np2] != null) && (c[np2].getCpf().equals(ccpf))) {
JOptionPane.showMessageDialog(null,
"Existe um usuário com este CPF.\n");
flag = 1;
break;
} else {
c[npp].setCpf(ccpf);
break;
}
}
if (flag != 1) {
String cnome = JOptionPane
.showInputDialog("Qual o nome do cliente " + npp + "?");
c[npp].setNome(cnome);
String cend = JOptionPane
.showInputDialog("Qual o endereço do cliente " + npp
+ "?");
c[npp].setEndereco(cend);
String ctel = JOptionPane
.showInputDialog("Qual o telefone do cliente " + npp
+ "?");
c[npp].setTelefone(ctel);
}
}
}
多数民众赞成:
import javax.swing.JOptionPane;
public class ClienteInterface
{
public static void main (String args[])
{
ClienteDB cc = new ClienteDB();
int funcao;
do{
String fc=JOptionPane.showInputDialog("Bem vindo!\nQual função você deseja?\n1-Incluir Cliente\n2-Consultar Cliente\n3-Alterar Cliente\n4-Excluir Cliente\n5-Listar clientes\n9-Fim");
funcao=Integer.parseInt(fc);
switch (funcao)
{
case 1:
cc.incluir();
break;
case 2:
cc.consultar();
break;
case 3:
cc.alterar();
break;
case 4:
cc.excluir();
break;
case 5:
cc.listar();
break;
case 9:
break;
}
}while (funcao!=9);
}
}
答案 0 :(得分:1)
您似乎忘记了初始化阵列。你做过吗
c = new (data_type)[length]
答案 1 :(得分:1)
现在我们知道它是哪一行,问题在于if
if (c[npp] != null) { // HERE YOU CHECK IT IS NOT NULL
JOptionPane.showMessageDialog(null,
"Já possui um cliente neste campo.");
} else {
// PASS THIS POINT, c[npp] CAN ONLY BE NULL
String ccpf = JOptionPane.showInputDialog("Qual o cpf do cliente "
+ npp + "?");
for (int np2 = 1; np2 < 11; np2++) {
if ((c[np2] != null) && (c[np2].getCpf().equals(ccpf))) {
JOptionPane.showMessageDialog(null,
"Existe um usuário com este CPF.\n");
flag = 1;
break;
} else {
c[npp].setCpf(ccpf); // NULL POINTER... FOR A GOOD REASON
break;
}
}
您需要更改if for
if (c[npp] == null) {
或者你想写
c[np2].setCpf(ccpf);
代替。
我知道如果设置正确,Eclipse IDE可以即时找到它。如果您没有使用IDE,我强烈建议您开始使用。