【问题标题】:How to use input to get a particular element in a list? [duplicate]如何使用输入来获取列表中的特定元素? [复制]
【发布时间】:2016-06-07 07:19:57
【问题描述】:

我是 Java/编程的新手,我正在尝试编写一个简单的程序,如果该元素等于某些用户输入,则该程序会从列表中获取一个元素。我正在使用 for 循环和 if 语句来实现这一点,但即使用户输入和元素匹配,编程也不会将元素打印到屏幕上。如果有人可以解释为什么这不起作用,将不胜感激。干杯

public static void main(String[] args){

    ArrayList<String> names = new ArrayList<String>();
    String tempObject; 
    String findName;

    names.add("John");
    names.add("Ronny");
    names.add("Gona");
    names.add("Gina");

    Scanner Input = new Scanner(System.in);
    System.out.print("Search list for: ");
    findName = Input.nextLine();

    for (int i = 0; i < names.size(); i++){
        tempObject =  names.get(i);

        if (tempObject == findName){
            System.out.print("\n" + tempObject);
        }
    }
}

【问题讨论】:

  • 你试过用调试器单步调试你的代码吗?

标签: java if-statement for-loop arraylist user-input


【解决方案1】:

给你:

if (tempObject.equals(findName)){
   System.out.print("\n" + tempObject);
}

对于 String 是的对象,始终使用方法 equals(),因为 == 将比较引用,而不是值(或在 equals() 方法中设置的值 - 在 String 中,它将比较大小,并且然后比较同一位置上的每个char(如果它们相等)——此外,如果你需要,你有一个名为equalsIgnoreCase 的方法——有时,最好将它用于用户输入)。

对于原语,您必须使用==

【讨论】:

    【解决方案2】:

    平等和身份之间存在区别,在上面的代码中,您使用身份而不是平等,如果您更改代码(使用平等)如下所示,您将获得所需的内容

    if (tempObject.equal(findName)){
            System.out.print("\n" + tempObject);
    }
    

    【讨论】:

      【解决方案3】:

      您应该使用 String equals 来比较两个字符串是否相等,而不是运算符 == 只是比较引用。

      试试这样的 if 语句:

      if (tempObject.equals(findName)){...}
      

      【讨论】:

        猜你喜欢
        • 2021-08-03
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 2020-02-11
        相关资源
        最近更新 更多