Java测试变量是否等于数组中的值,如果不打印-1

时间:2016-11-28 02:21:26

标签: java arrays if-statement

我需要查看数组中给定变量值何时首次出现并且一旦发生,将该变量更改为首次出现时的数字,如果没有出现,则将值更改为-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; 

2 个答案:

答案 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;
     }

}