用户输入的整数频率

时间:2013-11-11 00:53:23

标签: java frequency

这可能很简单,但我无法弄清楚。我正在尝试打印出用户输入的频率。例如,用户输入数字1的次数是多少?这是我的一些代码。

import java.util.Scanner;
public class Ex2partB {

    public static void main (String ags []) {
        Scanner input = new Scanner ( System.in );

        int number1; 
        int number2;
        int number3;
        int number4;
        int number5;
        int product;

        System.out.print( "Enter first integer: " ); 
        number1 = input.nextInt();

        System.out.print( "Enter second integer: " ); 
        number2 = input.nextInt();

        System.out.print( "Enter third integer: " ); 
        number3 = input.nextInt();

        System.out.print( "Enter fourth integer: " ); 
        number4 = input.nextInt();

        System.out.print( "Enter fifth integer: " ); 
        number5 = input.nextInt();

        product = number1 + number2 + number3 + number4 + number5;

        System.out.printf (" Product is %d\n ", product );

    }
}

3 个答案:

答案 0 :(得分:1)

以下是一种非常强大的方法。它使用HashMap来存储输入及其频率,并将结果传递给TreeMap以对键进行排序并打印出结果。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class App {
    public App() {
        Map<Integer, Integer> map = buildMap();
        printFrequency(map);
    }

    public Map<Integer, Integer> buildMap() {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        Scanner input = new Scanner(System.in);
        int n, key;

        System.out.print("How many numbers will you enter?: ");
        n = input.nextInt();

        for (int i = 0; i < n; i++) {
            System.out.printf("Enter integer #%d: ", i + 1);
            key = input.nextInt();
            map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1);
        }

        input.close();

        return map;
    }

    public void printFrequency(Map<Integer, Integer> map) {
        Map<Integer, Integer> treeMap = new TreeMap<Integer, Integer>(map);

        System.out.println("\nValue\tFrequency");

        for (Integer key : treeMap.keySet()) {
            System.out.printf("%5d\t%9d\n", key, treeMap.get(key));
        }
    }

    public static void main(String[] args) {
        new App();
    }
}

示例运行:

How many numbers will you enter?: 10
Enter integer #1: 1
Enter integer #2: 2
Enter integer #3: 3
Enter integer #4: 2
Enter integer #5: 3
Enter integer #6: 4
Enter integer #7: 1
Enter integer #8: 2
Enter integer #9: 2
Enter integer #10: 5

Value   Frequency
    1           2
    2           4
    3           2
    4           1
    5           1

答案 1 :(得分:0)

将输入存储在哈希映射中。如果输入已经在哈希映射中,则递增该键的值。然后,您将输入频率作为地图中的值。

答案 2 :(得分:0)

您需要对输入数量的大小设置max约束。让我们说“选择一个数字1和10”。所以你可以制作一个大小为10的数组;

int[] array = new int[10];

使用0初始化值;

for (int i = 0; i > 10; i++){
    array[i] = 0;
}

现在每次输入输入数字时,只需增加索引即可。但请记住,索引是基于零的,因此对于10,您希望使用索引9

例如,假设用户输入为10.然后你就像这样增加第9个索引

array[number1 - 1]++;  // 

为剩余的输入执行此操作。

打印值只是遍历数组

for (int i = 0; i < array.length) {
    System.out.println((i + 1) + " : " + array[i]);
}