有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

变量基本Java控制结构问题。

我是一名大学新生,我的编程作业有问题。我从讲师那里得到的作业是让我用Java编写一个程序,接收学生的信息,让学生选择学生选修多少科目,输入分数和学分,然后是计算成绩和科目分数的公式。在课程结束时,该课程将能够输出学生信息(姓名、ID等)和输入的所有科目的总学分、所有科目的总学时以及累积平均学分(CGPA)

然而,我这里有三个问题

  1. 为了读取用户想要输入的主题数量,我设置的循环有一个问题
  2. 当我试图打印“Grade=“+subjectGrade”);我的编译器说它还没有初始化。同样适用于成绩点和科目CreditHour
  3. 我不知道如何让程序计算出总的科目分数、总学时和CGPA。因为取决于用户想要的主题数量,我不知道如何让程序接收用户的输入并将它们汇总在一起

我的代码是这样的:

package javaquiz1;

import java.util.Scanner;

/**
 *
 * @author jerem_000
 */
public class JavaQuiz1 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner (System.in);

        String name;
        int ID;
        int tel;
        String email;
        int subjects;

        String subjectName;
        int subjectCreditHour;
        int subjectMark;
        String subjectGrade;
        double GradePoint;

        double subjectGradePoint;
        double CGPA;
        double totalSubjectGP;
        int totalCreditHour;

        System.out.print("Please input student's name : ");
        name = input.nextLine();
        System.out.print("Please input student's ID : ");
        ID = input.nextInt();
        System.out.print("Please input student's telephone number : ");
        tel = input.nextInt();
        System.out.print("Please input student's email : ");
        email = input.next();
        System.out.print("Please input number of subjects : ");
        subjects = input.nextInt();

        for (int i = 1; i >= subjects ; i++) {  //I'm having an issue with this loop 
        System.out.println("Subject " + i +  " : Please input the following"); //I placed the variable i there in order to make the program print something like "Subject 1 , Subject 2, Subject 3 etc". Depending on the user's number of subjects input
        System.out.print("Subject name : ");
        subjectName = input.next(); 
        System.out.print("Credit Hour : ");
        subjectCreditHour = input.nextInt();
        System.out.print("Mark : ");
        subjectMark = input.nextInt();

        if ( subjectMark >= 80 ) {
            subjectGrade = "A";
            GradePoint = 4.0;
        } else if (subjectMark < 80) {
            subjectGrade = "B+";
            GradePoint = 3.5;
        } else if (subjectMark < 70) {
            subjectGrade = "B";
            GradePoint = 3.0;
        } else if (subjectMark < 65) {
            subjectGrade = "C+";
            GradePoint = 2.5;
        } else if (subjectMark < 55) {
            subjectGrade = "C";
            GradePoint = 2.0;
        } else if (subjectMark < 50) {
            subjectGrade = "D";
            GradePoint = 1.0;
        } else  {
            subjectGrade = "F";
            GradePoint = 0.0;
        } 
    }

        System.out.println("Grade = " + subjectGrade); 
        System.out.println("Subject Grade Point = " + (GradePoint * subjectCreditHour)); //I'm having a problem with the subjectGrade, GradePoint, and subjectCreditHour, it says variable might have not been initialized 

        System.out.println("Name : " + name);
        System.out.println("ID : " + ID);
        System.out.println("Tel : " + tel);
        System.out.println("email : " + email);

        System.out.print("Total subject Grade Points = "  ); 
        System.out.print("Total Credit Hours = " );
        System.out.print("Cumulative Grade Point Average =");  //On this 3 system.out.prints, I can't seem to think of a way to read the Grade Point, Total Credit Hours, and CGPA, and add them all together  

    }
}

我还有一个关于程序应该如何运行的示例输出:

Please input student's name : James Cook 
Please input student's ID : 0106578
Please input student's tel : 010783938
Please input student's e-mail : jcook@gmail.com
Please input number of subjects : 3 

Subject 1 : Please input the following
Subject name : Fundamentals of Programming
Credit Hour : 4 
Mark : 78
Grade : B+
Subject Grade Point : 14.0 

Subject 2 : Please input the following
Subject name : English
Credit Hour : 3 
Mark : 85
Grade : A
Subject Grade Point : 12.0 

Subject 3 : Please input the following
Subject name : Computer Fundamentals
Credit Hour : 3 
Mark : 78
Grade : B+
Subject Grade Point : 10.5 

Name : James Cook
ID : 0106578 
tel :  010783938 
e-mail : jcook@gmail.com

Total subject Grade Point = 36.5
Total Credit Hours = 10
CGPA = 3.65 

计算科目分数的公式为 subjectGradePoint=成绩点*积分小时

计算CGPA(累积分数平均值)的公式为 CGPA=总受试者GP/totalCreditHours

欢迎纠正、批评和建议,以便今后改进。提前谢谢


共 (3) 个答案

  1. # 1 楼答案

    1) I have an issue with the loop that I have set in order to read how many subjects the user wants to key in.

    已经有@Nishan在评论中回答了。只要用for (int i=1;i <= subjects; i++)替换for (int i=1;i >= subjects; i++)


    2) When I tried to print "Grade = " + subjectGrade); my compiler says it hasn't been initialized. Same goes to the GradePoint and subjectCreditHour.

    已经回答了


    3) And I couldn't figure out how to get the program to calculate the Total Subject Grade Points, Total Credit Hours, and CGPA. Because depending on how many numbers of subjects the user wants, I can't figure out how to get the program to take in the user's input and sum them up together

    您已经走上了正确的道路,因为您拥有所需的蓄能器:

    double subjectGradePoint = 0d;
    double CGPA = 0d;
    double totalSubjectGP = 0d;
    int totalCreditHour = 0;
    

    在循环中和嵌套的if-else块之后,需要在每次迭代中更新subjectGradePointtotalSubjectGPtotalCreditHour变量:

    subjectGradePoint = GradePoint * CreditHour;
    totalSubjectGP += subjectGradePoint;
    totalCreditHour += CreditHour;
    

    最后,在循环计算CGPA之后:

    CGPA = totalSubjectGP / totalCreditHour;
    
  2. # 2 楼答案

    Java要求方法变量在使用前进行初始化, 只要初始化字符串值,它就会正常工作。请参阅下面的代码摘录

        String subjectName=null;
        int subjectCreditHour=0; 
        String subjectGrade=null;
    
  3. # 3 楼答案

    java变量在使用前必须初始化

    导入java。util。扫描仪

    /**
     *
    * @author jerem_000
    */
    

    公共类JavaQuiz1{

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner (System.in);
    
        String name;
        int ID;
        int tel;
        String email;
        int subjects;
    
        String subjectName;
        int subjectCreditHour=0;
        int subjectMark;
        String subjectGrade="";
        double GradePoint=0;
    
        double subjectGradePoint=0;
        double CGPA;
        double totalSubjectGP;
        int totalCreditHour;
    
        System.out.print("Please input student's name : ");
        name = input.nextLine();
        System.out.print("Please input student's ID : ");
        ID = input.nextInt();
        System.out.print("Please input student's telephone number : ");
        tel = input.nextInt();
        System.out.print("Please input student's email : ");
        email = input.next();
        System.out.print("Please input number of subjects : ");
        subjects = input.nextInt();
    
        for (int i = 1; i >= subjects ; i++) {  //I'm having an issue with this loop 
        System.out.println("Subject " + i +  " : Please input the following"); //I placed    the        variable i there in order to make the program print something like "Subject 1 , Subject 2, Subject 3 etc". Depending on the user's number of subjects input
        System.out.print("Subject name : ");
        subjectName = input.next(); 
        System.out.print("Credit Hour : ");
        subjectCreditHour = input.nextInt();
        System.out.print("Mark : ");
        subjectMark = input.nextInt();
    
        if ( subjectMark >= 80 ) {
            subjectGrade = "A";
            GradePoint = 4.0;
        } else if (subjectMark < 80) {
            subjectGrade = "B+";
            GradePoint = 3.5;
        } else if (subjectMark < 70) {
            subjectGrade = "B";
            GradePoint = 3.0;
        } else if (subjectMark < 65) {
            subjectGrade = "C+";
            GradePoint = 2.5;
        } else if (subjectMark < 55) {
            subjectGrade = "C";
            GradePoint = 2.0;
        } else if (subjectMark < 50) {
            subjectGrade = "D";
            GradePoint = 1.0;
        } else  {
            subjectGrade = "F";
            GradePoint = 0.0;
        } 
    }
    
        System.out.println("Grade = " + subjectGrade); 
        System.out.println("Subject Grade Point = " + (GradePoint * subjectCreditHour)); //I'm having a problem with the subjectGrade, GradePoint, and subjectCreditHour, it says variable might have not been initialized 
    
        System.out.println("Name : " + name);
        System.out.println("ID : " + ID);
        System.out.println("Tel : " + tel);
        System.out.println("email : " + email);
    
        System.out.print("Total subject Grade Points = "  ); 
        System.out.print("Total Credit Hours = " );
        System.out.print("Cumulative Grade Point Average =");  //On this 3 system.out.prints, I can't seem to think of a way to read the Grade Point, Total Credit Hours, and CGPA, and add them all together  
    
    }
    

    }