Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-(打印不同的数字)_Java_Printing_Numbers_Distinct - Fatal编程技术网

Java-(打印不同的数字)

Java-(打印不同的数字),java,printing,numbers,distinct,Java,Printing,Numbers,Distinct,我试图解决这个问题: “编写一个程序,读入十个数字,并显示不同数字的数量以及由一个空格分隔的不同数字。” 我的代码目前并没有保存所有不同的数字,同时重复显示0。如果有人能看出我的逻辑哪里出了问题,任何提示都会有所帮助。谢谢大家! public class PracticeProject { public static void main(String args[]) { int[] number = new int[10]; int[] counter = new int[10]

我试图解决这个问题:

“编写一个程序,读入十个数字,并显示不同数字的数量以及由一个空格分隔的不同数字。”

我的代码目前并没有保存所有不同的数字,同时重复显示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] + " ");
    }
}
公共课堂实习项目
{
公共静态void main(字符串参数[])
{
int[]编号=新int[10];
int[]计数器=新的int[10];
int numcounter=0;
努姆根(数字);
numcounter=distNum(数字、计数器、numcounter);
dispDist(计数器、numcounter);
}
公共静态void numGen(int[]编号)
{
Random rand=新的Random();
for(int i=0;i对于(int j=0;j问题在于
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;
}
public static int distNum(int[]number,int[]counter,int numcounter){
for(int i=0;i
我遍历随机数数组,对每一个随机数,我扫描
计数器
,查看是否已经遇到该值。如果该值重复,则不会将其添加到唯一列表中


此方法已使用IntelliJ与原始代码的其余部分一起进行了测试,它似乎工作正常。

请尝试使用下面的函数。…使用Hashmap…键将为否。值将为它发生的间隔时间

public void duplicate(int[] a) {

    HashMap<Integer, Integer> h = new HashMap<Integer, Integer>();
    for (int i = 0; i < a.length; i++) {
        Integer j = (int) h.put(a[i], 1);
        if (j != null) {         // checking if already in hashmap
            h.put(a[i], j + 1);   // if there then incrementing value
        }

    }

    Iterator it = h.entrySet().iterator();  // displaying value you can have you logic here
    while (it.hasNext()) {
        Map.Entry pair = (Map.Entry) it.next();
        System.out.println(pair.getKey() + " = " + pair.getValue());
        it.remove(); // avoids a ConcurrentModificationException

    }
}
公共无效副本(int[]a){
HashMap h=新的HashMap();
for(int i=0;i
如果使用
数组
存储计数器,则需要设置默认值,否则如果数组有多个
0
,则通过相等来区分。因为
int数组
默认值为0

您可以使用
列表
向量
存储
计数器

public static void main(String args[]) {
        int[] number = new int[10];
        int[] counter = new int[10];
        List<Integer> counters = new ArrayList<Integer>();
        int numcounter = 0;

        numGen(number);
        numcounter = distNum(number, counters, numcounter);
        dispDist(counters, 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, List<Integer> counters, int numcounter) {
        for (int i : number) {
            if (!counters.contains(i)){
                counters.add(i);
            }
        }
        return numcounter;
    }

    public static void dispDist(List<Integer> counter, int numcounter) {
        for (Integer i : counter) {
            System.out.print(i + " ");
        }
    }
publicstaticvoidmain(字符串参数[]){
int[]编号=新int[10];
int[]计数器=新的int[10];
列表计数器=新的ArrayList();
int numcounter=0;
努姆根(数字);
numcounter=distNum(数字、计数器、numcounter);
dispDist(计数器、numcounter);
}
公共静态void numGen(int[]编号){
Random rand=新的Random();
for(int i=0;i
使用您的输入数字数组创建映射keep random进入
集合
,该集合只保持距离如果不想存储频率,您也可以使用Set