2013-01-12 168 views
0

我正在寫一個彩票班,其餘的代碼正在工作,除了比較匹配彩票數量的方法。我無法弄清楚我的生活如何保持比賽的數量並返回。從嵌套for循環返回變量

我對Java相當陌生,所以我很抱歉,如果這是一個明顯的答案。

下面是方法,我有工作代碼:

public int numIntsInCommon(int[] picks){ 
    int inCommon = 0; 

    for (int counter = 0; counter < 5; counter++) 
    { 
     for (int index = 0; index < 5; index++) 
     { 
      if (lotteryNumbers[counter] == picks[index]) 
       inCommon += 1; 

     } 
     return inCommon; 
    } 

    return inCommon; 
    } 

現在它目前只返回0 任何幫助將不勝感激!謝謝

+2

是否希望有內return語句?這可能會縮短執行時間,並且比您想要的時間還早。 – BlackVegetable

回答

2

從for循環中刪除return inCommon。外面的回報永遠不會到達。

2

在方法有機會完成外部循環之前,第一個return語句將返回inCommon值。我真的不確定這個第一次返回聲明的意義。

1
public int numIntsInCommon(int[] picks) 
{ 
    int inCommon = 0; 

    for (int counter = 0; counter < 5; counter++) 
    { 
     for (int index = 0; index < 5; index++) 
     { 
      if (lotteryNumbers[counter] == picks[index]) 
       inCommon++; 
     } 
    } 

    return inCommon; 
} 

現在應該沒問題。你之前做過的,在第一次迭代之後跳出了嵌套循環。換句話說:由於你的嵌套返回,循環在計數器= 1後結束。

+1

什麼'索引'?沒有任何'索引','用戶...'放在第一個'return'的地方。只有'counter'變量 – Andremoniy

+0

噢,我忘記了第一次迴歸的地方。它不在嵌套循環中,它在外面。謝謝! –

0

在java中,「return」表示函數的終止,所以如果你在內部循環中返回,外部循環將永遠不會執行任何情況。

0

如果使用Java集合框架並定義lotteryNumbers和選秀權的名單,然後你的問題是很容易解決的,是這樣的:

public int numIntsInCommon(List<Integer> picks) { 
    List<Integer> matches = new ArrayList<Integer>(picks); 
    matches.retainAll(lotteryNumbers); 
    return matches.size(); 
}