【发布时间】:2017-07-22 23:40:40
【问题描述】:
我正在尝试计算整数出现在二维数组中的次数并打印计数。我是 Java 新手,还在学习。
这是我正在使用的二维数组:
System.out.println("Array\t Nummbers");
int Array[][] = { { 39, 16, 13, 1, 35, 31, 47 }, { 39, 2, 45, 44, 38, 19, 40 }, { 39, 43, 33, 16, 20, 9, 30 },
{ 42, 23, 26, 27, 1, 48, 47 }, { 18, 25, 47, 31, 46, 36, 20 }, { 21, 34, 19, 6, 4, 25, 29 },
{ 30, 5, 22, 23, 11, 47, 19 }, { 34, 30, 7, 31, 16, 45, 41 }, { 37, 9, 7, 42, 45, 24, 5 },
{ 39, 34, 28, 5, 37, 17, 22 }, { 42, 47, 34, 15, 35, 41, 28 }, { 22, 8, 46, 30, 36, 28, 11 };
我正在使用我在这里找到的以下代码,我做了一些更改,但我仍然无法修复它。
System.out.println("\t" + countCharInRow(Array));
public static Map<Character, Integer> countCharInRow(char[][] myArray) {
Map<Character, Integer> charOccurences = new HashMap<>();
Set<Character> rowCharacters = new HashSet<>();
for(char[] row : myArray) {
for(char charInArray = row) { // put all the chars on the line in the set
rowCharacters.add(row);
}
for(char charInSet : rowCharacters) {
Integer occurences = charOccurences.get(charInSet);
if(occurences == null) { // first occurence
charOccurences.put(charInSet, 1);
} else { // increment
charOccurences.put(charInSet, occurences.intValue() + 1);
}
}
}
return charOccurences;
}
有什么建议吗?
【问题讨论】:
-
问题不是用英文写的。请更好地解释自己。您的意思是您希望该函数生成二维数组中所有整数频率的映射?
-
谢谢...试图找出并打印每个数字在那个大数组中出现的次数......希望你能理解,对不起我的英语不好!跨度>
-
那么如果
'a'在第一行出现3次,在第二行出现2次,您希望'a': 5被添加到地图中吗? -
是的,先生,正是这个..
-
因此无需先将字符放入集合中。事实上,这将使您最多计算一行中的每个字符一次,因为一个集合没有重复项。本着这种精神添加了答案。