在数组Java中查找重复项:自动递增不起作用

时间:2018-08-06 01:52:32

标签: java arrays auto-increment

我是Java的新手,我的代码遇到了问题。我试图在Java中的数组中查找重复项,直到自动递增使我遇到困难(它不会递增),一切似乎都可以正常工作。我检查了没有FOR z循环的情况,并且测试运行良好,存在“ match”的问题,当存在z循环时,“ match”不会增加。 这是代码,您能帮我吗?谢谢:-)

Exceptions

2 个答案:

答案 0 :(得分:0)

猜测,您正在尝试确定生日是否重复。而且,您正在count次重做测试。

您的代码中有一个问题,因此实际上您每次都使用完全相同的生日来重做模拟,而不是重做相同的“重复生日模拟”。

for(int z = 0; z < count; z++){
    //Populate the birthday array with random birthdays
    Random rand = new Random();
    rand.setSeed(count);

    // populate birthdays with rand

    // find duplicates from birthdays
 }

您每次都使用count设置随机种子。假设count在循环期间没有变化,则意味着您正在Random中设置相同的种子。设置相同的种子意味着随后生成的随机数序列将是相同的。这意味着,如果种子给您birthdays而没有重复,则即使您重做100次,您也将获得相同的“无重复生日”。

您应该做的是将Random结构移到循环之外。您甚至可以删除setSeed,因为Random正在自动播种。

Random rand = new Random();
//rand.setSeed(count);    // you can remove the manual seeding

for(int z = 0; z < count; z++){
    // populate birthdays with rand

    // find duplicates from birthdays
 }

答案 1 :(得分:-1)

问题不在于“匹配”本身。问题出在代码本身的逻辑上。

在此示例中,“生日”数组中有2个匹配项(值1和2)。

原始代码的问题之一是您在循环内设置测试数组的值,并且还在循环内进行“匹配检查”。

尝试这个:

public class Testing {

public static void main(String[] args) {

    int match;
    match = 0;

    int[] birthdays = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2 };

    for (int i = 0; i < birthdays.length; i++) {
        for (int j = i + 1; j < birthdays.length; j++) {
            if ((birthdays[i] == birthdays[j]) && (i != j)) {
                match = match + 1;

            }
        }
    }

    System.out.println(match);

}

}

我不知道您想用代码实现什么,但是对于您遇到的问题,这将是实现它的方法之一。