从数组列表中获取中值长度
Get the median length from an arraylist
我是 Java 的新手,我想进行计算,但总是返回错误。我正在尝试获取添加到数组列表中的单词的中值长度。我找到了使用数组执行此操作的代码,但我似乎无法找到使用数组列表执行此操作的解决方案。
这是我的代码:
(通过文本字段添加单个字符串单词)
ArrayList<String> stringList = new ArrayList<>();
double wordLength;
double average;
double middle;
String medianNum;
@Override
protected void onCreate(Bundle savedInstanceState) {...
middle = 0;
for (String word2 : stringList) {
wordLength = stringList.length();
middle = wordLength / 2;
}
if (middle % 2 == 1){
medianNum = String.format("%.2f", middle);
} else {
medianNum = String.format("%.2f", ((middle-1) + middle)/2.0);
}
// Add/Update the average number to the textview
medianLength.setText(medianNum);
}
首先,根据字符串的长度对数组进行排序。可以通过将 Comarator 传递给排序函数来实现,如下所示:
Collections.sort(stringList, new Comparator<String>() {
@Override
public int compare(String s1, String s2)
{
return s1.length() - s2.length();
}
});
然后,得到中间如下:
if (stringList.size() % 2 == 1) {
middle = stringList.get(stringList.size()/2).length();
} else {
middle = (stringList.get(stringList.size()/2).length()
+ stringList.get(stringList.size()/2-1).length()) / 2.0;
}
我是 Java 的新手,我想进行计算,但总是返回错误。我正在尝试获取添加到数组列表中的单词的中值长度。我找到了使用数组执行此操作的代码,但我似乎无法找到使用数组列表执行此操作的解决方案。
这是我的代码: (通过文本字段添加单个字符串单词)
ArrayList<String> stringList = new ArrayList<>();
double wordLength;
double average;
double middle;
String medianNum;
@Override
protected void onCreate(Bundle savedInstanceState) {...
middle = 0;
for (String word2 : stringList) {
wordLength = stringList.length();
middle = wordLength / 2;
}
if (middle % 2 == 1){
medianNum = String.format("%.2f", middle);
} else {
medianNum = String.format("%.2f", ((middle-1) + middle)/2.0);
}
// Add/Update the average number to the textview
medianLength.setText(medianNum);
}
首先,根据字符串的长度对数组进行排序。可以通过将 Comarator 传递给排序函数来实现,如下所示:
Collections.sort(stringList, new Comparator<String>() {
@Override
public int compare(String s1, String s2)
{
return s1.length() - s2.length();
}
});
然后,得到中间如下:
if (stringList.size() % 2 == 1) {
middle = stringList.get(stringList.size()/2).length();
} else {
middle = (stringList.get(stringList.size()/2).length()
+ stringList.get(stringList.size()/2-1).length()) / 2.0;
}