java - 局部变量可能未初始化

标签 java

我正在尝试制作一个成绩计算器。除了程序没有正确处理条件以输出正确的字母等级之外,一切都按规范进行。

对此有什么帮助吗?

import java.util.Scanner;

public class GradeCalculator {
    public static void main(String args []) {
        String name;
        String major;
        int attendance;
        int homework;
        int project1;
        int project2;
        int midterm;
        int finalexam;
        int extra;
        String finalgrade;
        double attweight = 0.05;
        double hwweight = 0.35;
        double project1weight = 0.075;
        double project2weight = 0.075;
        double midtermweight = 0.20;
        double finalweight = 0.25;
        double totalgrade;
        Scanner in = new Scanner(System.in);
        System.out.println("What is your name? ");
        name = in.nextLine();
        System.out.println("What is your major? ");
        major = in.nextLine();
        System.out.println("What is your attendance grade (out of 100)? ");
        attendance = in.nextInt();
        System.out.println("What is your homework grade (out of 100)? ");
        homework = in.nextInt();
        System.out.println("What is your project 1 grade? ");
        project1 = in.nextInt();
        System.out.println("What is your project 2 grade? ");
        project2 = in.nextInt();
        System.out.println("What is your midterm grade? ");
        midterm = in.nextInt();
        System.out.println("What is your final grade? ");
        finalexam = in.nextInt();
        if(attendance > 100 || homework > 100 || project1 > 100 || project2 >100 || midterm > 100 || finalexam > 100) {
            System.out.println("Your grade cannot exceed 100");
        }
        totalgrade = ((attendance * attweight) + (homework * hwweight) + (project1 * project1weight) + (project2 * project2weight) + (midterm * midtermweight) + (finalexam * finalweight));
        if(totalgrade > 93 && totalgrade < 100){
            finalgrade = "A";
        }
        if(totalgrade > 89 && totalgrade < 93){
            finalgrade = "A-";
        }
        if(totalgrade > 86 && totalgrade < 90){
            finalgrade = "B+";
        }
        if(totalgrade > 82 && totalgrade < 87){
            finalgrade = "B";
        }
        if(totalgrade > 79 && totalgrade < 83){
            finalgrade = "B-";
        }
        if(totalgrade > 76 && totalgrade < 80){
            finalgrade = "C+";
        }
        if(totalgrade > 72 && totalgrade < 77){
            finalgrade = "C";
        }
        if(totalgrade > 69 && totalgrade < 73){
            finalgrade = "C-";
        }
        if(totalgrade > 59 && totalgrade < 70){
            finalgrade = "D";
        }
        if(totalgrade < 60){
            finalgrade = "F";
        }

        System.out.println("Your name is " + name + " and your major is " + major + ". Your attendance grade is " + attendance + ", your homework grade is " + homework + ", your project one grade is " + project1 + ", your project two grade is " + project2 + ", your midterm grade is " + midterm + ", your final exam grade is" + finalexam + ". Your total grade is " + totalgrade + " and your letter grade is " + finalgrade);
    }
}

错误:

The local variable finalgrade may not have been initialized

最佳答案

编辑:详细说明

您已经告诉我们问题了。您需要初始化 Finalgrade。您确实在条件语句中对其进行了初始化,但是当尝试读取输出中的变量值时,不能保证会发生这种情况(因为初始化仅在满足条件时才会发生),因此编译器会生气。一个简单的解决方法是将 Finalgrade 设置为空字符串。

String finalgrade = "";

另外,看看你的条件语句。你排除了 93,也许还有其他数字。最好在第一个“if”语句之后使用“else if”。

关于java - 局部变量可能未初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651317/

相关文章:

java - 在 net beans 中添加新元素后对数组列表中的元素求和

java - 在 Docker 上运行 Java Swing GUI 应用程序

java - MyBatis 将数据库和对象映射在一起

java - 数据绑定(bind) "error: cannot find symbol class Models"

javascript - Android:JS Bundle 未从 Metro Bundler 服务器加载

java - 如何保护解密 key 不被反编译?

java - Hibernate 在更新父对象时不更新子对象

java - 重新初始化ArrayList的迭代器不起作用

java - 为什么 String.chars() 在 Java 8 中是整数流?

java - 如何在 Play2 应用程序退出时访问静态注入(inject)依赖项