2012-10-24 46 views
1

我想使两种方法,其他方法运行良好。麻烦是伪匹配计数器,其中输入应该是随机数,例如5 4 3 2,用户猜测输入例如5 3 6 1,输出将是:伪匹配:1并匹配:2.我不理解我在我的伪匹配方法中出错。Java匹配计数器和伪匹配计数器

public int match(int[] guess) //Counts the number of matches 
{ 
    int count = 0; 

    for(int i = 0; i<3; i++) 
    { 
     if (lotteryNumbers[i] == guess[i]) 
     { 
      count++; 
     } 

    } 
    return count; 
} 
//First add psuedo counter for current program 
//Then modify for multiple variables. 

//Single slot to Single slot. 
public int psuedoMatch(int[] guess) 
{ 
    boolean arraysEqual = true; 
    int psuedoCount = 0; 

    //Determine same size: 
    if (lotteryNumbers.length != guess.length) 
    { 
     arraysEqual = false; 
    } 

    //Determine if elements contain same data: 

    while (arraysEqual && psuedoCount < 3) // guess.length 
    { 
     if (lotteryNumbers[psuedoCount] != guess[psuedoCount]) 
     { 
      arraysEqual = false; 
     } 
     psuedoCount++; 
    } 

    return psuedoCount; 
} 
+0

我们称之为“公牛和牛”游戏=) – Juvanis

+0

是我的解决方案对你有用吗? – Juvanis

回答

0

我猜你正在努力寻找这2个阵列, 的匹配数量,但相等的相对指数元素应该不同,以便我们可以将它们添加到伪计数器机制中。所以看看这个方法并试试吧:

public int psuedoMatch(int[] guess) 
{ 
    int psuedoCount = 0; 

    if (lotteryNumbers.length != guess.length) 
     return 0; 

    int size = lotteryNumbers.length; 

    // Determine if elements contain same data, but at different indexes! 

    for (int i = 0; i < size; i++) { 
     for (int j = 0; j < size; j++) { 
      // Denote the inequality check i != j 
      if (lotteryNumbers[i] == guess[j] && i != j) 
       psuedoCount++; 
     } 
    } 

    return psuedoCount; 
} 
+0

是的,这是我想要做的,谢谢你的帮助!我只是不明白为什么有一个嵌套的循环。 – user1770068

+0

@ user1770068使用嵌套for循环,因为您需要在猜测数组中搜索彩票号码的每个元素。 – Juvanis

0

我认为下面是你正在尝试做的:

public int psuedoMatch(int[] guess) {   
    int psuedoCount = 0; 

    //Determine same size: 
    if (lotteryNumbers.length != guess.length) { 
     return psuedoCount; 
    } 

    //Determine if elements contain same data: 

    for(int i=0; i<lotteryNumbers.length || psuedoCount < 3; i++) { 

     //I think you want to count all the matches till you have 3 matches 
     if (lotteryNumbers[psuedoCount] == guess[psuedoCount]) { 
      psuedoCount++; 
     }    
    } 

    return psuedoCount; 
}