我需要查看数组中给定变量值何时首次出现并且一旦发生,将该变量更改为首次出现时的数字,如果没有出现,则将值更改为-1。 例如,32首先出现在数组中,因此它应该打印1但100永远不会出现在数组中,因此它应该打印-1但是如何在我的循环中创建第二个if语句,以便变量为-1但它测试找到它的原始值。对不起,如果我没解释得那么好。
这是循环的代码和第一个if语句
public static int occurrence(int[] a) {
Scanner scnr = new Scanner(System.in);
int occurrence = scnr.nextInt();
for (int i = 0; i < a.length; i++)
if (a[i] == occurrence)
occurrence = i + 1;
return occurrence;
答案 0 :(得分:1)
JDK库附带了一个Arrays类,仅用于此类。
首先,导入类:
import java.util.Arrays;
现在你需要做的就是:
System.out.println(Arrays.binarySearch(a, occurrence));
基本上就是这样。 &#34; binarySearch()&#34; method接受两个参数,即您要引用的数组的名称(a),以及您在该数组中搜索的值(出现)。然后它返回值的索引。如果在数组中找不到该值,则返回-1。
答案 1 :(得分:-1)
看看这个。尝试将输入代码(扫描仪)与功能逻辑分开。这将使发生方法可重用。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int data[] = { 2,5,7};
Scanner scnr = new Scanner(System.in);
int inputValue = scnr.nextInt();
int index = occurrence( data, inputValue);
System.out.println("value at index: " + index);
}
//
// find first match, then exit the loop if found.
//
public static int occurrence(int[] a, int inputValue) {
int result = -1;
for (int i = 0; i < a.length; i++)
if (a[i] == inputValue) {
result = i;
break;
}
return result;
}
}