我正在尝试编写一个程序,要求用户在数组中搜索一个数字。 如果数组包含给定的数字,则程序告知包含该数字的索引。 如果数组不包含给定的数字,程序将通知未找到该数字。
我的问题可能是格式问题。 这是我的程序。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] array = new int[8];
array[0] = 6;
array[1] = 2;
array[2] = 8;
array[3] = 1;
array[4] = 3;
array[5] = 0;
array[6] = 9;
array[7] = 7;
System.out.print("Search for? ");
int searching = Integer.valueOf(scanner.nextLine());
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] == searching) {
System.out.println(searching + " is at index " + i + ".");
break;
}
if (i == array.length-1 && searching != array[i]) {
System.out.println(searching +" was not found.");
break;
}
}
}
我不喜欢我必须加上“break;” 语句,然后在程序找到所搜索整数的索引。 这不允许程序找到多个结果。 假设搜索=3,3的索引是4和5。 我让程序编写的方式将不允许程序找到满足前提的第二个索引。
您所能做的是添加一个布尔变量,它告诉您是否找到了该值。 最初它是false,但当找到匹配值时,您将其更新为true
。
boolean found = false;
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] == searching) {
System.out.println(searching + " is at index " + i + ".");
found = true;
}
}
循环后,检查是否找到值:
if (!found) {
System.out.println(searching +" was not found.");
}
您可以让布尔标志found
在找到时将其分配为true
(至少找到一次)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] array = new int[8];
array[0] = 6;
array[1] = 2;
array[2] = 8;
array[3] = 1;
array[4] = 3;
array[5] = 3;
array[6] = 9;
array[7] = 7;
System.out.print("Search for? ");
int searching = Integer.parseInt(scanner.nextLine());
boolean found = false;
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] == searching) {
System.out.println(searching + " is at index " + i + ".");
found = true;
}
}
if (!found)
{
System.out.println(searching +" was not found.");
}
}
输出:
Search for? 3
3 is at index 4.
3 is at index 5.
Search for? 10
10 was not found.
如果要在数组中找到给定数字的所有索引,则需要对数组进行完全迭代。 不能使用break
语句停止迭代。
您可以将给定数字的所有索引放在list
中。 若要检查数组中是否至少存在一次数字,请检查列表
的大小。
List<Integer> indexList = new ArrayList<>();
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] == searching) {
indexList.add(i);
}
}
if (indexList.size() == 0) {
System.out.println(searching +" was not found.");
} else {
// iterate over indexList and print all the indexes
}