我如何完全耗尽这个数组中的项目?
How do I completely exhaust the items in this array?
我正在尝试编写一个程序,要求用户输入要在数组中搜索的数字。如果数组包含给定的数字,程序会告诉包含该数字的索引。如果数组不包含给定的数字,程序将提示找不到该数字。
我的问题可能是格式问题。这是我的程序。
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 AND 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
的大小。
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
}
或者,您可以使用一些标志变量来检查是否至少找到了一次数字,并且此检查应该在循环之外。
boolean exists = false;
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] == searching) {
exists = true;
System.out.println(searching + " is at index " + i + ".");
}
}
if (!exists) {
System.out.println(searching +" was not found.");
}
我正在尝试编写一个程序,要求用户输入要在数组中搜索的数字。如果数组包含给定的数字,程序会告诉包含该数字的索引。如果数组不包含给定的数字,程序将提示找不到该数字。
我的问题可能是格式问题。这是我的程序。
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 AND 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
的大小。
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
}
或者,您可以使用一些标志变量来检查是否至少找到了一次数字,并且此检查应该在循环之外。
boolean exists = false;
for (int i = 0; i <= array.length - 1; i++) {
if (array[i] == searching) {
exists = true;
System.out.println(searching + " is at index " + i + ".");
}
}
if (!exists) {
System.out.println(searching +" was not found.");
}