我拿不出中间带。我要的是单词的中间值。很难从中获得价值 for
循环。
public class MedianWord {
static double medianWordLength(String words) {
String[] parts = words.split(" ");
int[] a;
double median = 0;
for (int i = 0; i < parts.length; i++) {
a = new int[parts[i].length()];
Arrays.sort(a);
if (a.length % 2 == 0) {
median = ((double) a[a.length / 2] + (double) a[a.length / 2 - 1]) / 2;
}
else
median = (double) a[a.length / 2];
}
return median;
}
}
4条答案
按热度按时间0qx6xfy61#
4dbbbstv2#
这应该很管用:
mznpcxlj3#
循环的每次迭代都会覆盖
a
使用新数组的数组。您需要将问题分成两部分-首先,迭代parts
数组并将其转换为数组a
然后找到数组的中值:旁注:
将单词转换成一个排序的长度数组可以(可以说)用流更优雅地完成:
ct3nt3jp4#
首先,不断地对数组进行排序,然后在循环中替换数组。这是你的主要问题。
但是为了简化这个过程,您只需要一个数组而不需要for循环。只需根据单词的长度对单词数组进行排序。我留了一些打印报表在里面,这样你就可以看到发生了什么。如果在一个或多个空格上拆分,则在输入字符串时无需如此小心。
印刷品