在数组中查找模式并在列表中使用括号显示它

时间:2016-04-01 03:30:35

标签: java

您好我正在尝试使用括号(如

)在数组中显示模式

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;
}

1 个答案:

答案 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} }。