2014-02-26 52 views
0

我已經宣佈了幾個數組,數組這些我們有以下值在特定指數的值搜索數組:

{0, 1, 1, 0, 0} 
{1, 0, 0, 0, 1} 
{0, 1, 0, 0, 0} 

我有相同數量的值的多個陣列。

對於我的Android應用程序,我將擁有一組按鈕。

如果按下按鈕1,我想知道是否有任何1在位置1,3和5以及多少個。如果按下按鈕2,我想知道是否有任何1在位置1,2,3和4以及多少個。

我搜索過的所有東西都顯示瞭如何確定1是否存在於數組中,但不在特定位置。任何建議/幫助?

上什麼,我試圖完成,如果你想閱讀,但我應該能夠有一個有用的解決方案的所有問題我上面的問題

詳情:

我安排在一個8x8的網格64個按鈕代表人體軀幹的部分,在我的13個陣列中代表64個數字(0或1)。陣列確定器官是否存在於上述軀幹部分之一中(如果器官存在則爲1,如果不存在則爲0)。

我想推一個按鈕,並在該位置搜索所有數組。如果我按下按鈕35,我想知道肝臟是否存在於該部分。

我的最終輸出將告訴用戶該部分可能有多少百分比的器官。如果一個部分包含一個器官,它將是1,然後除以包含該器官的部分的總數。

如果您已經閱讀了這篇文章,我是否從正確的角度來解決這個問題,您是否還有其他想法?

+0

遍歷數組並檢查值? – leigero

+0

究竟是什麼問題?當你問「我是從正確的角度來攻擊這個問題」時,你指的是什麼?我相信你知道如何訪問一個數組... – Zong

+0

無需啓動並顯示任何代碼,它更像是你要求我們做你的工作 – Baby

回答

1

我建議你可能想用二元函數來做到這一點。這裏是當按鈕2按下 第一我們聲明數組作爲列,而不是行

byte col1 = 8; // equivalent of 0 1 0 0 0 
    byte col2 = 1; //    0 0 0 0 1 
    byte col3 = 2; //    0 0 0 1 0 
    // this makes your original array look like 
    // 0 0 0 
    // 1 0 0 
    // 0 0 0 
    // 0 0 1 
    // 0 1 0 
    System.out.println(bitcount(col1) + bitcount(col2) + bitcount(col3)); 

    /* to set or unset bytes 
    my_byte = my_byte | (1 << pos); 
    To un-set a bit: 
    my_byte = my_byte & ~(1 << pos); 
    */ 
    } 
static private int bitcount(byte n) { 
     int count = 0 ; 
     while (n != 0) { 
      count++ ; 
      n &= (n - 1) ; 
     } 
     return count ; 
} 

然後我們通過在每個我們想要的列的計數位計數來計數
Construction an logical expression which will count bits in a byte

一個例子
+0

考慮日誌會給你MSB,而不是數量,我相信。 – Zong

+0

@宗錚李你是對的,將不得不應用這些方法之一http://stackoverflow.com/questions/2896374/construction-an-logical-expression-which-will-count-bits-in-a-字節 – clancer

+0

無論如何,最好只使用[BitSet](http://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html)。 – Zong

1

從你在你的問題都說明,你可以做到這一點就像這樣:

比方說你有一個數組:

int[][] numArray = {{0, 1, 1, 0, 0}, 
        {1, 0, 0, 0, 1}, 
        {0, 1, 0, 0, 0}}; 

你只需要有方法是這樣的:

int countOne(int[] num){ 
    int count=0; 
    for(int i=0;i<numArray.length;i++){ 
     for(int j=0;j<num.length;j++){ 
      if(numArray[i][num[j]]==1){ 
       count++; 
      } 
     } 
    } 
    return count; 
} 

如果按鍵1被按下時,我想知道如果有1的是在第1位,第3和5多少:

調用方法:

int[] button1 = {0,2,4}; 
System.out.println("the number of 1's:"+countOne(button1)); 

如果按鈕2推,我想知道如果有1的是在第1位,2,3,4,有多少。

int[] button2 = {0,1,2,3}; 
System.out.println("the number of 1's:"+countOne(button2)); 
+0

這正是我需要開始的! –

+0

@ user2329162檢查更新的答案,它可能會幫助您更多 – Baby

+0

我已經應用了這個想法,但也許我可以從您那裏獲得更多指導? –