计算在10个用户输入整数的数组中发生的次数最少

时间:2012-11-26 18:43:06

标签: java arrays counter

LeastFrequent - 从System.in输入的10个整数的列表中输出最不频繁出现的整数及其出现次数。如果列表中的多个整数出现频率最低,则输出最不频繁出现的任何整数。将您的班级命名为LeastFrequent。您可以假设所有10个整数都在-100到100的范围内。

import java.util.*;

public class LeastFrequent 
{
public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);

    int[] arr = new int[10];
    int[] hold = new int[300];

    int x = 0;
    int count = 0;
    int a = 1;
    int least = 0;

    System.out.print("numbers: ");
    //adds 10 numbers to an array and counts occurrence
    for(int i=0;i<arr.length;i++)
    {
        arr[i] = scan.nextInt();
        hold[arr[i]]++;
    }

    for(int i=0;i<hold.length;i++)
    {
        if(hold[i] > 0)
        {

        }
    }


    System.out.println("least frequent: " + count + " occurs " + arr[count] + " times");
}
}

我要求用户输入10个整数并将其放入数组中。 我也计算输入数字的出现并将其存储在另一个数组中。 我坚持寻找最不频繁的一个。 我知道我需要再次扫描第二个阵列,我不知道如何。 关于如何在跳过等于0的值时比较第二个数组的元素值的任何想法?

2 个答案:

答案 0 :(得分:3)

首先,以下内容并不完全正确:

hold[arr[i]]++

如果我输入-1会怎样?

对于找到最少出现的元素,您需要找到hold中大于零的最小值。在迭代hold时,您可以跟踪到目前为止看到的最小值和索引。

最后,问题的另一种方法是对数组进行排序。执行此操作后,相同的值将彼此相邻。这简化了重复次数的计算。

答案 1 :(得分:0)

你必须找到min:

int min = hold[0]; // Mark the first position as min
int pos = 0;
 for(int i=1;i<hold.length;i++) 
    {
        if(hold[i] < min) // if the current position have less frequency 
        {    
         min = hold[i]; // save is frequency
         pos = i;       // and is position
        }
    }