我想写一个将数据分配到“年龄”类别的主要方法。 每个数据项都有年龄。年龄类别为5年,0-5岁,5-10岁,10-15岁等。 我只想显示包含项目的类别。
所以如果输入是:
理查德,15岁
海伦,24岁 史蒂文,16岁
埃德,19
弗雷德里克,12岁
输出类似于:
计算类别:
0-5,5-10,10-15,15-20,20-25
分布:
10-15:弗雷德里克 15-20:Richard,Steven,Edwin 20-25:海伦答案 0 :(得分:0)
public static void main(String[] args) throws IOException {
Map<Integer, List<String>> result = new HashMap<Integer, List<String>>();
while (true) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
if (!line.contains(",")) {
System.out.println("incorrect input string");
continue;
}
String name = line.split(",")[0];
String age = line.split(",")[1];
age = age.trim();
int ageInt = -1;
try {
ageInt = Integer.parseInt(age);
} catch (NumberFormatException e) {
System.out.println("age not a number");
continue;
}
ageInt = ageInt - ageInt % 5;
List<String> names = result.get(ageInt);
if (names == null) {
names = new ArrayList<String>();
}
names.add(name);
result.put(ageInt, names);
printResult(result);
}
}
private static void printResult(Map<Integer, List<String>> result) {
List<Integer> ages = new ArrayList<Integer>();
ages.addAll(result.keySet());
Collections.sort(ages);
for (Integer integer : ages) {
List<String> name2 = result.get(integer);
System.out.println(integer + " - " + (integer + 5) + " : ");
for (String s : name2) {
System.out.println(" " + s);
}
}
}