JAVA中列表中的数字索引

yk9xbfzb  于 2023-02-11  发布在  Java
关注(0)|答案(1)|浏览(69)

我需要有一个程序,要求用户为一个号码,并报告该号码的索引在列表中。如果号码没有找到,该程序不应打印任何东西。

    • 示例:**
Sample Output:
1
2
3
3
4
Search for? 3
3 is at index 2
3 is at index 3

这是我写的,但是put循环了很多次。你能建议修复它吗?

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

public class IndexOf {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        ArrayList<Integer> list = new ArrayList<>();
        while (true) {
            int input = Integer.valueOf(scanner.nextLine());
            if (input == -1) {
                break;
            }

            list.add(input);
        }

        System.out.println("Search for? ");
        int src = scanner.nextInt();
        int ind = 0;

        for(int i=0; i<list.size(); i++){
            int num = list.get(i);
            if(src == num){
                ind = list.indexOf(src);
            }
            System.out.println(src + " is at index " + ind);
        }

    }
}

编辑
输入:1 2 3 3 4 -1
搜索?3输出:3在索引0,3在索引0,3在索引2,3在索引2,3在索引2,///所以每个索引只能有一个句子,即使我在for循环之后,它也只输出第一个if索引。

rhfm7lfc

rhfm7lfc1#

我可以在你的代码中看到一个问题,就是你打印了所有的东西,而不仅仅是匹配项。要解决这个问题,你需要把你的System.out.println放入if中,如下所示:

for(int i=0; i<list.size(); i++){
            int num = list.get(i);
            if(src == num){
                ind = i;
                System.out.println(src + " is at index " + ind);
            }
        }

如果有什么不对劲就告诉我。

相关问题