使用用户输入搜索数组并打印具有此值的所有元素
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");
}
我试图在数组中搜索某个值并在 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");
}