首页 > 解决方案 > 如果数组中有重复的数字,该程序似乎不起作用

问题描述

如果用户在数组中搜索一个数字,系统应该打印出该数字所在的索引,否则它会打印出 search not found。到目前为止,它仅在数组中没有重复数字时才有效。

我尝试删除中断,但这会阻止程序打印也包含搜索编号的第二个索引。

任何帮助将不胜感激,谢谢!

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        int[] array = new int[10];
        array[0] = 6;
        array[1] = 2;
        array[2] = 8;
        array[3] = 1;
        array[4] = 3;
        array[5] = 0;
        array[6] = 9;
        array[7] = 8;

        System.out.print("Search for? ");
        int searching = Integer.valueOf(scanner.nextLine());
      
        for (int i = 0; i < array.length; i++) {
            int input = array[i];
            if (searching == input) {
                System.out.println(searching + " is at index " + i);
                break;
                
            }
            else if (searching != array[i] && i == (array.length - 1))
            {
                System.out.println(searching+" was not found!");
                break;
            }
            

        }   
    }

标签: javaarraysloopsif-statement

解决方案


         Scanner scanner = new Scanner(System.in);
         int[] array = {6,2,8,1,3,0,9,8};
         System.out.print("Search for? ");
         int searching = scanner.nextInt();
         ArrayList positions=new ArrayList();
         for (int i = 0; i < array.length; i++) {
             int input = array[i];
             if (searching == input) {
                 positions.add(i);
             }
         }
         if(positions.size()>0) {
             for(int x=0;x<positions.size();x++) {
                 System.out.println(searching+" is at index "+ positions.get(x));
             }
         }
         else {
             System.out.println(searching+" was not found!");
         }

要使用扫描仪接收 int,使用 nextInt () 方法更容易。在第一个中,您可以累积在 arraylist 中搜索的数字匹配的位置,然后检查 arraylist 是否不为空,并打印找到该数字的所有位置。如果列表为空,则打印未找到的消息。


推荐阅读