基本的Java控制结构问题。

时间:2013-10-16 11:53:46

标签: java variables for-loop logic control-structure

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

但是,我有三个问题

  1. 我在设置循环时遇到问题,以便阅读用户想要输入的主题数。
  2. 当我试图打印“Grade =”+ subjectGrade)时;我的编译器说它还没有被初始化。同样适用于GradePoint和subjectCreditHour。
  3. 我无法弄清楚如何让程序计算总学科成绩点数,总学分时数和CGPA。因为根据用户想要的主题数量,我无法弄清楚如何让程序接受用户的输入并将它们总结在一起
  4. 我的代码是这样的:

    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

    对未来的改进欢迎更正,批评,建议。提前致谢!

3 个答案:

答案 0 :(得分:1)

Java要求在使用前初始化方法变量, 只是初始化字符串值,它应该工作正常。请参阅以下代码摘录。

    String subjectName=null;
    int subjectCreditHour=0; 
    String subjectGrade=null;

答案 1 :(得分: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块之后,您需要在每次迭代中更新subjectGradePointtotalSubjectGPtotalCreditHour变量:

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

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

CGPA = totalSubjectGP / totalCreditHour;

答案 2 :(得分:0)

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

import java.util.Scanner;

/**
 *
* @author jerem_000
*/

public class Java Quiz 1 {

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

}

}