ZYa222999 2024-03-18 13:15 采纳率: 33.3%
浏览 2
已结题

Java四舍五入保留两位小数


package Easy_;
import java.util.Scanner;
public class ScoreAnalysis {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        /*
         * 小蓝给学生们组织了一场考试,卷面总分为100 分,每个学生的得分都是一个 0 到 100 的整数。
         * 请计算这次考试的最高分、最低分和平均分。
         * 输入的第一行包含一个整数 n,表示考试人数。
         * 接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
         * 输出三行。
         * 第一行包含一个整数,表示最高分。
         * 第二行包含一个整数,表示最低分。
         * 第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
         */
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] ScoreArr = new int[n];
        int sum = 0;
        for(int i = 0;i < n;i++) {
            int score = scan.nextInt();
            sum = sum + score;
            ScoreArr[i] = score;
        }
        double a = sum / n;
        
        int MaxScore = ScoreArr[0];
        int MinScore = ScoreArr[0];
        for(int i = 1;i < n;i++) {
            if(ScoreArr[i] > ScoreArr[i - 1]) {
                MaxScore = ScoreArr[i];
            }
            if(ScoreArr[i] < ScoreArr[i - 1]) {
                MinScore = ScoreArr[i];
            }
        }
        System.out.println(MaxScore);
        System.out.println(MinScore);
        System.out.println(AverageScore);
        scan.close();
    }

}

请问怎么将AverageScore四舍五入保留两位小数?

  • 写回答

3条回答 默认 最新

  • 关注

    ZYa222999 下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    要将AverageScore四舍五入保留两位小数,可以使用Java中的DecimalFormat类。以下是修改后的代码:

    import java.util.Scanner;
    import java.text.DecimalFormat;
    
    public class ScoreAnalysis {
    
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            int[] ScoreArr = new int[n];
            int sum = 0;
            for (int i = 0; i < n; i++) {
                int score = scan.nextInt();
                sum += score;
                ScoreArr[i] = score;
            }
            double average = (double) sum / n; // 将sum强制转换为double,使结果为浮点数
            
            int maxScore = ScoreArr[0];
            int minScore = ScoreArr[0];
            for (int i = 1; i < n; i++) {
                if (ScoreArr[i] > maxScore) {
                    maxScore = ScoreArr[i];
                }
                if (ScoreArr[i] < minScore) {
                    minScore = ScoreArr[i];
                }
            }
    
            DecimalFormat df = new DecimalFormat("0.00"); // 格式化为保留两位小数的格式
            System.out.println(maxScore);
            System.out.println(minScore);
            System.out.println(df.format(average)); // 使用DecimalFormat格式化平均分数
            scan.close();
        }
    }
    

    解决方案:

    1. 导入java.text.DecimalFormat类,这个类提供了用于格式化数字的方法。
    2. 将sum强制转换为double类型,以确保平均分数的计算结果为浮点数。
    3. 创建一个DecimalFormat对象,并指定格式为"0.00",表示保留两位小数。
    4. 使用DecimalFormat的format方法,将计算出的平均分数格式化为保留两位小数的字符串。
    5. 打印格式化后的平均分数。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月18日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题