繁体   English   中英

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

[英]Java Testing if a variable equals a value in the array if not print -1

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

JDK库附带一个Arrays类,用于处理此类情况。

首先,导入类:

import java.util.Arrays;

现在您要做的就是:

System.out.println(Arrays.binarySearch(a, occurrence));

基本上就是这样。 “ binarySearch()”方法采用两个参数,这两个参数分别是您要引用的数组的名称(a)和要在该数组中搜索的值(出现)。 然后,它返回值的索引。 如果在数组中找不到该值,则返回-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;
     }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM