0

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

但是,我这里有三个问题

  1. 我为读取用户想要键入的主题数量而设置的循环存在问题。
  2. 当我尝试打印“Grade =” + subjectGrade); 我的编译器说它还没有被初始化。同样适用于 GradePoint 和 subjectCreditHour。
  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 = GradePoint * CreditHour

计算 CGPA(累积平均绩点)的公式是 CGPA = totalSubjectGP / totalCreditHours

欢迎指正、批评、建议,以供日后改进。提前致谢!

4

3 回答 3

1

Java 要求在使用前初始化方法变量,只需初始化 String 值,它就可以正常工作。请参阅下面的代码摘录。

    String subjectName=null;
    int subjectCreditHour=0; 
    String subjectGrade=null;
于 2013-10-16T12:00:56.213 回答
1

1) 我为读取用户想要键入的主题数量而设置的循环存在问题。

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


2)当我尝试打印“Grade =” + subjectGrade)时;我的编译器说它还没有被初始化。同样适用于 GradePoint 和 subjectCreditHour。

已经回答了。


3) 我不知道如何让程序计算总科目成绩、总学分和 CGPA。因为根据用户想要的主题数量,我无法弄清楚如何让程序接收用户的输入并将它们汇总在一起

由于您拥有所需的累加器,因此您已经走在正确的道路上:

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

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

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

最后,在你的循环计算之后CGPA

CGPA = totalSubjectGP / totalCreditHour;
于 2013-10-16T12:57:56.830 回答
0

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

导入 java.util.Scanner;

/**
 *
* @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  

}

}

于 2013-10-16T12:16:40.777 回答