Java - (打印不同的数字)

Kev*_*inG 3 java printing numbers distinct

我正试图解决这个问题:

"编写一个读取十个数字的程序,显示不同数字的数量和不同的数字,用一个空格分隔."

我的代码目前没有保存所有不同的数字,并且反复显示0.如果有人能看到我的逻辑出错的地方,任何提示都会有所帮助.谢谢!

public class PracticeProject
{
public static void main(String args[])
{
    int[] number = new int[10];
    int[] counter = new int[10];
    int numcounter = 0;

    numGen(number);
    numcounter = distNum(number, counter, numcounter);
    dispDist(counter, numcounter);
}

public static void numGen(int[] number)
{
    Random rand = new Random();

    for (int i = 0; i < number.length; i++)
    {
        number[i] = rand.nextInt(10);
        System.out.print(number[i] + " ");
    }

    System.out.println();
}

public static int distNum(int[] number, int[] counter, int numcounter)
{
    for (int i = 0; i < number.length; i++)
    {           
        for (int j = 0; j <= i; j++)
        {
            if (counter[j] == number[i])
            {
                break;
            }

            if (j == i)
            {
                counter[j] = number[i];
                numcounter++;
            }
        }
    }
    return numcounter;
}

public static void dispDist(int[] counter, int numcounter)
{
    for (int i = 0; i < numcounter; i++)
    {
        System.out.print(counter[i] + " ");
    }
}
Run Code Online (Sandbox Code Playgroud)

}

Tim*_*sen 5

问题出在你的distNum()方法中的逻辑,它没有正确地从输出数组中删除所有重复项.请尝试使用此版本:

public static int distNum(int[] number, int[] counter, int numcounter) {
    for (int i = 0; i < number.length; i++) {
        boolean isUnique = true;
        for (int j = 0; j < numcounter; j++) {
            if (counter[j] == number[i]) {
                isUnique = false;
                break;
            }
        }
        if (isUnique) {
            counter[numcounter] = number[i];
            numcounter++;
        }
    }
    return numcounter;
}
Run Code Online (Sandbox Code Playgroud)

我浏览了随机数字数组,每扫描一次,我都会counter查看是否已遇到该值.如果它是重复的,则它不会被添加到唯一列表中.

使用IntelliJ测试此方法以及其他原始代码,它似乎正常工作.