2016-11-28 81 views
0

我需要查看一個數組中的給定變量值何時首次發生,並且一旦發生變化時,就會將該變量更改爲數字,並且if它不會發生比將值更改爲-1。 例如32在數組中首先出現,所以它應該打印1但100從不出現在數組中,所以它應該打印-1,但是如何在循環中創建第二個if語句,以便該變量爲-1,但是它會測試顯示它的原始值。對不起,如果我沒有解釋得好。Java測試變量是否等於數組中的值,如果不打印-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

沒有關注。請顯示示例數據和預期輸出。 – OldProgrammer

+0

數據只是一堆不同的值,但預期的輸出是當您在掃描儀中輸入的值首次出現在數組中時的索引,因此如果2是放入掃描儀的值,而不是第一次出現時的值,並且打印說,如果第一次出現作爲第五個索引,然後它會打印5,但如果它從未出現,我希望它打印-1,最有可能我認爲這將使用第二個if語句。希望有幫助。對不起,沒有提供數據,只有很多數字,我希望沒有它可以理解。 – blazefire

回答

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

} 
1

JDK庫附帶一個Arrays類,僅用於這樣的事情。

首先,導入類:

import java.util.Arrays; 

現在,所有你需要做的是這樣的:

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

而這基本上它。 「binarySearch()」方法有兩個參數,它們是您引用的數組的名稱(a),以及您在該數組中搜索的值(出現次數)。然後它返回值的索引。如果在數組中找不到該值,則返回-1。

+0

請注意,'Arrays#binarySearch'需要一個有序的數組才能正常運行。 – Obicere

+0

如果我沒有記錯的話,還有一個Arrays.sort(數組)方法,它使用氣泡排序方法從最不重要的角度排序值。如果該人希望在搜索某個值之前對其數組進行排序,則可以添加: –

+0

...「Arrays.sort(a);」然後搜索出現的值。 (對不起,雙後,我不小心按輸入鍵入前面的評論)。 –

相關問題