这是我的第一个话题,我是pt-br,所以事先我会为我的英语道歉。
这是我的问题,我有这个代码,我输入ID来查看ArrayList,如果有等号,如果是肯定的,它会将已注册的项目带到屏幕上,如果是负数,则会转到其他位置。
但是在这段代码中,即使有注册项目,它也会转到其他地方。它显示已注册的项目,然后执行else块代码。
我不知道发生了什么,对我来说这是正确的。
//abre a opção para o usuário digitar o id para a busca
int opcao = Integer.parseInt(JOptionPane.showInputDialog("Digite o ID para a busca"));
//'for' para percorrer o vetor
for (Produto objProduto : vetorProdutos2) {
//if para verificar se o ID digitado para busca contém no vetor
if (objProduto.getId() == opcao) {
JOptionPane.showMessageDialog(null,
"\nID: " + objProduto.getId() + "\nDescrição: " + objProduto.getDescricao()
+ "\nEstoque: " + objProduto.getEstoque() + "\nPreço: "
+ objProduto.getPreço() + "\nStatus: " + objProduto.getStatus());
} else if (objProduto.getId() != opcao) {
JOptionPane.showMessageDialog(null, "Produto não encontrado");
}
}
答案 0 :(得分:1)
问题是你一直在搜索直到列表的末尾。因此,即使您找到了匹配的项目,下一个元素可能与您寻找的元素不同,因此其他元素也是如此。 你需要做的是显示" not found"仅当找不到匹配元素时才显示消息: 使用如下所示的布尔标志:
int opcao = Integer.parseInt(JOptionPane.showInputDialog("Digite o ID para a busca"));
boolean found = false;
//'for' para percorrer o vetor
for (Produto objProduto : vetorProdutos2) {
//if para verificar se o ID digitado para busca contém no vetor
if (objProduto.getId() == opcao) {
JOptionPane.showMessageDialog(null,
"\nID: " + objProduto.getId()+"\nDescrição: " + objProduto.getDescricao()
+ "\nEstoque: " + objProduto.getEstoque() + "\nPreço: "
+ objProduto.getPreço() + "\nStatus: " + objProduto.getStatus());
found = true;
}
}
if (! found)
{
JOptionPane.showMessageDialog(null, "Produto não encontrado");
}
答案 1 :(得分:0)
删除最后一个else并将其替换为要在所有选项都失败时显示的默认statemwnt。在你的else的末尾,如果把JOptionPane.showMessage .....显示你的默认消息。
答案 2 :(得分:-2)
我不确定您的代码中出现了什么问题(可能是.get函数之一正在以隐藏的方式修改objProduto)。
在任何一种情况下,这都可以解决您的问题,并且它在逻辑上是相同的:
//abre a opção para o usuário digitar o id para a busca
int opcao = Integer.parseInt(JOptionPane.showInputDialog("Digite o ID para a busca"));
//'for' para percorrer o vetor
for (Produto objProduto : vetorProdutos2) {
//if para verificar se o ID digitado para busca contém no vetor
if (objProduto.getId() == opcao) {
JOptionPane.showMessageDialog(null,
"\nID: " + objProduto.getId() + "\nDescrição: " + objProduto.getDescricao()
+ "\nEstoque: " + objProduto.getEstoque() + "\nPreço: "
+ objProduto.getPreço() + "\nStatus: " + objProduto.getStatus());
} else {
JOptionPane.showMessageDialog(null, "Produto não encontrado");
}
}