0

这可能很简单,但我无法弄清楚。我正在尝试打印出用户输入的频率。例如,用户输入数字 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 );

    }
}
4

3 回答 3

1

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

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
于 2013-11-11T01:32:15.180 回答
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]);
}
于 2013-11-11T01:05:26.740 回答
0

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

于 2013-11-11T00:58:37.760 回答