gpt4 book ai didi

java - 在 JFrame 中搜索

转载 作者:行者123 更新时间:2023-12-02 10:10:30 24 4
gpt4 key购买 nike

我将小型 JFrame 的数据存储在数组中。我将表单中输入的数字与用户正在查找的数字进行比较。但显示只显示最后一个添加的学生的结果,已经添加的学生找不到他们

private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {                                          
if(counter< studentList.length){
String code= txtcode.getText();
String name= txtname.getText();
String lastname= txtlastname.getText();
String rh = comborh.getSelectedItem().toString();
int age= Integer.parseInt(txtage.getText());

//the object is created
Student objStudent = new Student();

objStudent.setCode(code);
objStudent.setName(name);
objStudent.setLastname(lastname);
objStudent.setAge(age);
objStudent.setRH(rh);

studentList[counter] = objStudent;
counter++;

JOptionPane.showMessageDialog(this,"n° "+ counter+ " Students.");
}else{
JOptionPane.showMessageDialog(this,"Error","Error", JOptionPane.ERROR_MESSAGE);
}
}

信息添加到数组中没有问题

这就是条件

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
String code= txtcode.getText();
String name= txtname.getText();
String search= JOptionPane.showInputDialog(this,"search by code");

for (int i = 0; i<=studentList.length;i++){
if ((search).equals(code)){
JOptionPane.showMessageDialog(this,"code with the name of: "+name);
}
}
}

最佳答案

在方法jButton1ActionPerformed中,您要检查两个字符串变量searchcode的内容是否相同,而不是检查是否相同它们在内存中的位置是相同的。

请记住,Java 使用保存对内存的引用的变量,前提是该变量保存有引用对象(并且 String 类的实例是引用对象)。这类变量在C等语言中称为指针,指针的内容是内存地址。在 Java 中,引用变量对程序员的作用与 C 中指针的作用不同,但在幕后,它们是完全相同的。 Java 中几乎所有变量都保存对内存的引用,只有基本类型没有(基本类型的示例:char、int、double、float 等)。

您可能会问为什么这很重要?好吧,如果您在引用对象上使用 == 运算符,您不是在检查两个字符串的内容是否相同,而是在检查对两个对象的引用是否相同。这些是根本不同的比较。

如果你不想检查两个字符串是否具有相同的内容,则需要使用equals(String)方法,该方法是String类的成员,用于比较两个String的内容-对象(这正是我们想要的)。

现在,了解了所有这些,这行代码就不足为奇了

if (search == code) {

应替换为

if (search.equals(code)) { // which is equivalent to if (code.equals(search)) { 

如果您想了解有关指针(对内存的引用)的更多信息,我真的鼓励您通过研究来实现这一点,例如阅读一些有关编程语言 C 的文档。

您可能也不想阅读有关 Object 类的 equals 方法的更多信息,该方法在 String 类中被重写。

关于java - 在 JFrame 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55030018/

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