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

求支持6门以上课程的简易Java AKTS成绩计算器代码

搞定任意课程数的AKTS成绩计算器

看起来你已经摸到门道了——用循环来处理多门课的输入,但之前的尝试没把输入的数据存下来,自然没法完成后续的加权计算。而且原来的代码重复创建Scanner、硬编码只支持6门课,确实不够灵活。

下面是完善后的简洁代码,支持任意数量的课程,逻辑清晰还容易维护:

package sa;

import java.util.Scanner;

public class GradeCalculator {
    public static void main(String[] args) {
        // 只需要一个Scanner就够了,不用每次输入都新建
        Scanner scanner = new Scanner(System.in);
        
        // 先让用户输入课程数量
        System.out.print("Ders sayısını giriniz: ");
        int courseCount = scanner.nextInt();
        
        // 用数组来存每门课的成绩和AKTS值,这样输入后数据不会丢
        float[] grades = new float[courseCount];
        int[] aktsValues = new int[courseCount];
        
        // 循环输入所有课程的成绩
        System.out.println("Notları, gireceğiniz AKTS sırasıyla giriniz!");
        for (int i = 0; i < courseCount; i++) {
            System.out.printf("%d. not: ", i + 1);
            grades[i] = scanner.nextFloat();
        }
        
        // 循环输入对应课程的AKTS值
        System.out.println("Notları girdiğiniz sıra ile, AKTS lerini giriniz!");
        for (int i = 0; i < courseCount; i++) {
            System.out.printf("%d. AKTS: ", i + 1);
            aktsValues[i] = scanner.nextInt();
        }
        
        // 计算加权总分和总AKTS
        float totalWeightedScore = 0;
        int totalAkts = 0;
        for (int i = 0; i < courseCount; i++) {
            totalWeightedScore += grades[i] * aktsValues[i];
            totalAkts += aktsValues[i];
        }
        
        // 输出结果,保留两位小数更直观
        float weightedAverage = totalWeightedScore / totalAkts;
        System.out.printf("Hesaplanan ağırlıklı ortalama: %.2f%n", weightedAverage);
        
        // 用完记得关闭Scanner
        scanner.close();
    }
}

几个重要的改进点:

  • 只用一个Scanner:之前的代码每输入一个值就新建Scanner,完全没必要,还容易出问题,一个就够用到最后
  • 数组存储数据:这是你之前尝试的核心缺失——循环里的临时变量用完就没了,用数组把每门课的成绩和AKTS存起来,后面计算的时候才能遍历使用
  • 无课程数量限制:用户输入多少门课就处理多少,再也不用局限于6门
  • 清晰的逻辑拆分:输入成绩、输入AKTS、计算结果分成三个独立的循环,代码读起来一目了然
  • 美观的输出:用printf格式化输出平均分,保留两位小数,看起来更专业

补充说明:

如果担心用户输入非数字的情况,还可以加个输入验证(比如用hasNextFloat()判断),不过如果是课程作业的话,上面的代码应该完全够用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:32:18