您好我正在尝试使用括号(如
)在数组中显示模式32 31 [10] 32 [10] [10] [10] 12 [10] 34
10是最多的数字
我能够找到模式并用括号显示模式,但是当数组列表中没有模式时,它会将第一个值声明为模式。 [1] 3 4 5.如果没有模式,我不希望它显示括号。所有帮助将不胜感激。
public static int mode(int[] array) {
int mode = array[0];
int maxCount = 0;
for (int i = 0; i < array.length; i++) {
int value = array[i];
int count = 1;
for (int j = 0; j < array.length; j++) {
if (array[j] == value) count++;
if (count > maxCount) {
mode = value;
maxCount = count;
}
}
}
return mode;
}
答案 0 :(得分:0)
一旦知道了模式,就可以循环打印元素:
int[] array = ...
int mode = mode(array);
boolean first = true;
for (int elt : array) {
// print separator unless it's the first element
if (first) {
first = false;
} else {
System.out.print(' ');
}
if (elt == mode) {
System.out.print(elt);
} else {
System.out.print('[');
System.out.print(elt);
System.out.print(']');
}
}
System.out.println();
请注意,上述内容仅适用于具有唯一模式的阵列。如果数组是多模式的,mode()
方法任意断开关系而只支持第一个值。如果要括起所有模态值,则需要修改mode()
以返回值数组,并且打印循环需要测试每个元素是否在返回的数组中(而不是当前测试{{1} }。