如何检查输入字符串是否是现有对象的名称?

时间:2019-05-17 19:19:24

标签: java

我试图让用户通过JFrame文本字段(txtLlave)输入对象的名称,然后检查所输入的内容是否与类实例的名称(Estudiante)相匹配。在这种情况下,我创建了est1作为Estudiante类的对象。我希望程序仅在用户输入“ est1”或类Estudiante的另一个对象的名称时接受输入。如果不是该类的对象,则应要求重试。我无法检查是否存在具有输入名称的对象。

好吧,现在我知道对象没有名称,但是我如何让用户决定他们要使用哪个对象?假设我有两个类型为Estudiante的对象est1和est2。如何让用户在两者之间进行选择?

我尝试直接将instanceof与字符串一起使用,以查看它是否可以工作,但是没有。还尝试将字符串转换为对象,然后检查该对象是否是类的实例,但也无法正常工作。

Estudiante est1 = new Estudiante("Samuel",21);

if (txtLlave.getText() instanceof Estudiante) {

}

2 个答案:

答案 0 :(得分:2)

对象没有固有名称。有类,但没有类的实例。如果希望能够按名称查找对象,则需要对对象施加自己的命名机制,例如将它们放在Map中,其中map中的键是对象名称,而map中的值是对象本身。一旦有了对象,就可以检查其类型。但是,如何将对象与用户输入的某些字符串进行匹配完全取决于您。

这是一个使用Map在一系列对象上施加命名系统的示例:

import java.util.HashMap;
import java.util.Map;

class Estudiante {

    private String name;
    private int age;

    public Estudiante(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String toString() {
        return "Name: " + name + "  Age: " + age;
    }
}

public class Test {

    public static void main(String... args) {

        Map<String, Estudiante> estudiantes = new HashMap<>();

        estudiantes.put("est1", new Estudiante("Samuel",21));
        estudiantes.put("est2", new Estudiante("John",24));
        estudiantes.put("est3", new Estudiante("Joe",33));

        String name;

        // name = txtLlave.getText()
        name = "est2";
        if (estudiantes.containsKey(name)) {
            System.out.println("Found " + name + ": " + estudiantes.get(name));
        }
        else {
            System.out.println("No object with name: " + name);
        }

        // name = txtLlave.getText()
        name = "xxx";
        if (estudiantes.containsKey(name)) {
            System.out.println("Found " + name + ": " + estudiantes.get(name));
        }
        else {
            System.out.println("No object with name: " + name);
        }
    }
}

结果:

Found est2: Name: John  Age: 24
No object with name: xxx

答案 1 :(得分:0)

创建对象的实例(new Estudiante(...))时,它不会自动将其添加到任何种类的集合或查找中。因此,要确定学生是否已经存在,您需要将其添加到某种集合中,并添加一种在其中查找内容的方法。一个例子是HashMap。您可以通过类似于HashMap<String, Estudiante> dictionary = new HashMap<String, Estudiante>();的方式来实现它。之后,您将需要手动添加新记录:dictionary.put("est1",est1);之后,您可以使用if(dictionary.containsKey(textLlave.getText())) {...}检查HashMap中的名称。