如何打印出这个名字在列表中的位置?

How to print out the position of this name in the list?

嗨,Whosebug 上的开发人员!我在这个练习中遇到问题: “编写一个程序,要求用户使用键盘输入 N 个名称的列表,然后用户继续 输入名称进行搜索。程序应该打印出这个名字在列表中的位置。 如果名字没有出现在列表中,程序应该打印出值 -1。” 这是我的代码:

package Tut_01;

import java.util.ArrayList;
import java.util.Scanner;

public class Ex_04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        ArrayList<String> elements = new ArrayList<> ();
        System.out.print ("How many numbers do you want to input: ");
        int n = sc.nextInt (); // Count numbers that user want to input

        // Ask the user input values

        for (int i = 0; i < n; i++) {
            System.out.print ("Enter your name " + (i + 1) + ": ");
            String name = sc.next ();
            elements.add (name);
        }

        System.out.println ("Which name do you want to search ?");
        String searchName = sc.next ();

        // Problem?
        for (int p = 0; p < n; p++) {
            if (searchName == elements.get (p)) {
                System.out.println ("Your name is at index " + p + ": " + elements.get (p));
            }
        }

    }

这是我的控制台:

How many numbers do you want to input: 2
Enter your name 1: Hoa
Enter your name 2: Hieu
Which name do you want to search ?
Hoa

Process finished with exit code 0

我的意思是我不知道为什么我的代码停在那里而不是打印索引的位置。有人知道这个问题吗?谢谢你给我看!

您比较字符串的方式有误。 String 是一个对象而不是原始类型,所以你不能使用 ==.

正确的做法是:

searchName.equals(elements.get(p))

下面的简单代码会给出同样output.Make使用indexOf方法

System.out.println("Your name is at index " + elements.indexOf(searchName) + ": " + searchName);