使用用户输入搜索数组并打印具有此值的所有元素

Searching an array with user input and printing all elements that have this value

我试图在数组中搜索某个值并在 java 中显示包含该值的所有元素。例如,用户选择数字 5,数组中存储了 3 个具有该值的项目,因此将打印出所有 3 个项目。我的代码编译正常,但是当我 运行 它时,它跳转到 else 语句,即使我输入的是数组中的数字.. 任何帮助都会很棒。这是我的代码:

                case 3:
                //display all elements with the same state
                //get number user wishes to search for
                
                boolean found = false;
                 Scanner input = new Scanner(System.in);
                 System.out.print("Please enter the number you wish to search for");

                 //read user input
                 num = input.nextInt();

                 //traverse array
                 int k = 0;
                 for(k=0; k < myMonths.length; k++){
                     if(myMonths[index] == num){
                         found = true;
                         break;}
                     if(found){System.out.println(k);}

                     else{System.out.println("not found");}
                 }
                break;

这是数组:

            //Menu loop
            int myMonths[] = new int[5];
            int index = 0;
            int num;
            while(choice !=6){


                switch (choice){
                case 1:
                //int n = number of projects
                int n = 1;
                Scanner sc = new Scanner(System.in);
                System.out.println("How many months was your project?");


                for(int i=0; i<1; i++){
                    int a = sc.nextInt();

                    //if months is lesser than 2/greater than 12
                    if((a < 2) || (a > 12)){
                        System.out.println("Please enter an amount between 2 and 12 months");}

                   //if months is between 2 and 12 add it to the array

                    else{myMonths[index++] = a;} }
                break;

首先,您应该使用 k 而不是 index。其次,您不应该在每次迭代时都打印“未找到”(或对此进行测试)。您应该尽可能地限制变量范围。你还提到想要找到所有匹配的索引,所以你不应该过早地终止循环;我想你想要像

这样的东西
//assume the value isn't present.
boolean found = false;
//read user input
int num = input.nextInt();

//traverse array
for(int k = 0; k < myMonths.length; k++) {
    if (myMonths[k] == num){
        found = true;
        System.out.println(k); // don't break or the loop ends early.
    }
}
//this test can only be done after you iterate **all** values.
if (!found) {
    System.out.println("not found");
}