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