You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java对文本文件中带°C单位的温度数值进行降序排序

问题分析
  • 原代码直接对字符串做默认排序,使用的是字典序升序规则,不会提取温度数值比较,不符合降序排列的需求
  • 代码存在编译错误:finally块关闭输入流时变量名错误,你定义的BufferedReader实例名为reader,代码中错误调用了inputStream.close(),会直接编译失败
修正后代码

自定义比较器提取每行的温度数值做降序排列,代码如下:

import java.io.*;
import java.util.*;

public class temperatur {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = null;
        PrintWriter outputStream = null;
        ArrayList<String> rows = new ArrayList<>();

        try {
            reader  = new BufferedReader(new FileReader("temp.txt"));
            outputStream = new PrintWriter(new FileWriter("tempout.txt"));

            String line;
            while ((line = reader.readLine()) != null) {
                rows.add(line);
            }
            
            // 自定义排序规则:按温度数值降序排列
            Collections.sort(rows, (s1, s2) -> {
                int temp1 = Integer.parseInt(s1.split("°")[0].trim());
                int temp2 = Integer.parseInt(s2.split("°")[0].trim());
                return Integer.compare(temp2, temp1);
            });
            
            for (String cur : rows) {
                outputStream.println(cur);
            }
        } finally {
            if (reader != null) {
                reader.close();
            }
            if (outputStream != null) {
                outputStream.close();
            }
        }
    }
}
输出结果

运行代码后生成的tempout.txt内容如下,完全符合数值降序要求:

21° C
20° C
19° C
18° C
17° C
16° C
16° C
15° C
13° C

内容的提问来源于stack exchange,提问作者virreoh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:48:05