【发布时间】:2015-07-13 02:09:42
【问题描述】:
这里是java新手,我有一个小问题。
我最近收到了这个 txt 文件:
新墨西哥州阿尔伯克基,5352 英尺,202.3°
科罗拉多州丹佛市,5280 英尺,202.4°
明尼苏达州明尼阿波利斯,841 英尺,210.5°
阿拉巴马州伯明翰,644 英尺,210.8°
密歇根州底特律,639 英尺,210.8°
佛罗里达州迈阿密,11 英尺,211.9°
迪拜哈利法塔,2717 英尺,207.1°
加拿大国家电视塔,多伦多,1815 英尺,208.7°
并被要求查找并打印出两个中位数。问题是我在尝试使用Arrays.sort() 时不断出错。
public static void main(String[] args) {
File mf = new File("C:\\file.txt");
ArrayList<String> inData = new ArrayList<String>();
String strline;
try {
FileInputStream fstream = new FileInputStream(mf);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
while ((strline = br.readLine()) != null) {
strline = strline.trim();
if ((strline.length() != 0)) {
inData.add(strline);
}
}
br.close();
} catch (Exception e) {
System.err.println("Error CANNOT FIND FILE!");
}
//Calc median start
double median;
for (int i = 0; i < inData.size(); i++) {
String[] word = inData.get(i).split(", ");
double m = Double.parseDouble(word[3].substring(0, 5));
Arrays.sort(m);
if (m.length % 2 == 0) {
double middleNumOne = m[m.length / 2 - 0.5]
double middleNumTwo = m[m.length / 2 + 0.5]
System.out.println("Median:" + middleNumOne + "and" + middleNumTwo);
}
}
}
这是我到目前为止所拥有的。有人可以帮助我,告诉我我错过了什么吗?
【问题讨论】:
-
如何将 m 转换为数组?或者我应该如何处理 m 来整理出中位数?
-
您必须在
for循环之前创建一个数组,然后在每次传递时将m添加到数组中。