Java 在我的GPA计算器中需要输入两次

Java 在我的GPA计算器中需要输入两次,java,calculator,Java,Calculator,几周前,我刚刚开始编写代码,高中计算机科学课的一个项目要求我制作一个GPA计算器。这不是目前最好的代码,也不是计算GPA的最佳技术,但它只是一个开始(如果有人能帮助清理并简化它,我将非常感谢您) 但是代码有问题。每次需要从控制台进行用户输入时,他们必须按enter键两次。我觉得解决方法很简单,但我一直无法理解为什么会发生这种情况 import java.util.Scanner; public class gpaCalc { public static double gpa; public

几周前,我刚刚开始编写代码,高中计算机科学课的一个项目要求我制作一个GPA计算器。这不是目前最好的代码,也不是计算GPA的最佳技术,但它只是一个开始(如果有人能帮助清理并简化它,我将非常感谢您)

但是代码有问题。每次需要从控制台进行用户输入时,他们必须按enter键两次。我觉得解决方法很简单,但我一直无法理解为什么会发生这种情况

import java.util.Scanner;

public class gpaCalc {

public static double gpa;
public static String grade = "";
public static double gpaTotal = 0;
public static double points = 0;
public static double numberOfClasses;

public static double class1points;
public static double class2points;
public static double class3points;
public static double class4points;
public static double class5points;
public static double class6points;
public static double class7points;
public static double class8points;

static Scanner letterGrade = new Scanner(System.in);
static Scanner numClasses = new Scanner(System.in);

public static void main(String[] args) {
    System.out.println("Welcome to Adrian's GPA calculator.");
    System.out.println("This program will calculate your weighted and unweighted GPA for this school year.");
    classesNumber();
}

public static void classesNumber() {
    System.out.println("Please enter the number of classes that you are enrolled in for the school year.");
    numberOfClasses = numClasses.nextDouble(); //input is stored in variable numberOfClasses

    if(numberOfClasses >= 9 || numberOfClasses < 2)
        System.out.println("Are you sure you go to ECHS?");

    //limit the number of classes from 2-8

    if (numberOfClasses <= 8 && numberOfClasses >= 2)
        System.out.println("Please enter the letter grade you have recieved in class 1 (Uppercase letters i.e. A,B,C,D,F).");
    else 
        classesNumber(); //error occurs and doesn't reset when a letter is put and not a number 
    class1();
}

public static void class1() {
    grade = letterGrade.next();   //unweighted GPA finder
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0; 
    else {
        System.out.println("Invalid entry. Please enter a valid entry.");
        class1 ();
    }
    class1points = points;
    class2(); 
}

public static void class2() {
    System.out.println("Please enter the letter grade you have recieved in class 2 (Uppercase letters i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0; 
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else {
        System.out.println("Invalid entry. Please enter a valid entry.");
        class2();
    }
    class2points = points;
    class3();
}   

public static void class3() {
    System.out.println("Please enter the letter grade you have recieved in class 3 (Uppercase letters i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else {
        System.out.println("Invalid entry. Please enter a valid entry.");
        class3();
    }
    class3points = points;
    class4();
}   

public static void class4() {
    System.out.println("Please enter the letter grade you have recieved in class 4 (Uppercase letters i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else {
        System.out.println("Invalid entry. Please enter a valid entry.");
        class4();
    }
    class4points = points;
    class5();
}   

public static void class5() {
    System.out.println("Please enter the letter grade you have recieved in class 5 (Uppercase letters i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else { 
        System.out.println("Invalid entry. Please enter a valid entry.");
        class5();
    }
    class5points = points;
    class6();
}

public static void class6() {
    System.out.println("Please enter the letter grade you have recieved in class 6 (Uppercase letters i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else { 
        System.out.println("Invalid entry. Please enter a valid entry.");
        class6();
    }
    class6points = points;
    class7();
}   

public static void class7() {
    System.out.println("Please enter the letter grade you have recieved in class 7 (Uppercase letters i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else { 
        System.out.println("Invalid entry. Please enter a valid entry.");
        class7();
    }
    class7points = points;
    class8();
}

public static void class8() {
    System.out.println("Please enter the letter grade you have recieved in class 8 (Uppercase letter i.e. A,B,C,D,F).");
    grade = letterGrade.next();
    if (grade.equals("A"))
        points = 4.0;
    else if (grade.equals("B"))
            points = 3.0;
    else if (grade.equals("C"))
        points = 2.0;
    else if (grade.equals("D"))
        points = 1.0;
    else if (grade.equals("F"))
        points = 0;
    else {
        System.out.println("Invalid entry. Please enter a valid entry.");
        class8();
    }
    class8points = points;
    calculator();
}       

public static void calculator() {
    gpaTotal = (class1points + class2points + class3points + class4points + class5points + class6points + class7points + class8points ) / numberOfClasses; 
    System.out.println("Your unwweighted GPA is: " +  gpaTotal);

}

}
import java.util.Scanner;
公共类gpaCalc{
公共静态双gpa;
公共静态字符串级别=”;
公共静态双gpaTotal=0;
公共静态双点=0;
公共静态双类;
公共静态双点;
公共静态双类2分;
公共静态双类3分;
公共静态双类4分;
公共静态双类5分;
公共静态双类6分;
公共静态双类7分;
公共静态双类8分;
静态扫描仪letterGrade=新扫描仪(系统英寸);
静态扫描仪numClasses=新扫描仪(System.in);
公共静态void main(字符串[]args){
System.out.println(“欢迎使用Adrian的GPA计算器”);
println(“此程序将计算您本学年的加权和未加权平均成绩。”);
classesNumber();
}
公共静态void classesNumber(){
System.out.println(“请输入您在本学年注册的班级数量。”);
numberOfClasses=numclass.nextDouble();//输入存储在变量numberOfClasses中
如果(NumberOfClass>=9 | | NumberOfClass<2)
System.out.println(“您确定要去ECHS吗?”);
//将类的数量限制在2-8之间
如果(NumberOfClass=2)
System.out.println(“请输入您在第1类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
其他的
classesNumber();//当放置字母而不是数字时,会发生错误且不会重置
类别1();
}
公共静态无效类别1(){
grade=letterGrade.next();//未加权GPA查找器
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
否则,如果(等级等于(“D”))
分值=1.0;
否则,如果(等级等于(“F”))
分值=0;
否则{
System.out.println(“无效条目。请输入有效条目”);
类别1();
}
分数=分数;
类别2();
}
公共静态无效类2(){
System.out.println(“请输入您在第2类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
grade=letterGrade.next();
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
否则,如果(等级等于(“D”))
分值=1.0;
否则,如果(等级等于(“F”))
分值=0;
否则{
System.out.println(“无效条目。请输入有效条目”);
类别2();
}
Class2分=分;
类别3();
}   
公共静态无效类3(){
System.out.println(“请输入您在第3类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
grade=letterGrade.next();
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
否则,如果(等级等于(“D”))
分值=1.0;
否则,如果(等级等于(“F”))
分值=0;
否则{
System.out.println(“无效条目。请输入有效条目”);
类别3();
}
class3分=分;
类别4();
}   
公共静态无效类4(){
System.out.println(“请输入您在第4类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
grade=letterGrade.next();
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
否则,如果(等级等于(“D”))
分值=1.0;
否则,如果(等级等于(“F”))
分值=0;
否则{
System.out.println(“无效条目。请输入有效条目”);
类别4();
}
类别4分=分数;
类别5();
}   
公共静态无效类别5(){
System.out.println(“请输入您在第5类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
grade=letterGrade.next();
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
否则,如果(等级等于(“D”))
分值=1.0;
否则,如果(等级等于(“F”))
分值=0;
否则{
System.out.println(“无效条目。请输入有效条目”);
类别5();
}
类别5分=分;
类别6();
}
公共静态无效类6(){
System.out.println(“请输入您在第6类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
grade=letterGrade.next();
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
否则,如果(等级等于(“D”))
分值=1.0;
否则,如果(等级等于(“F”))
分值=0;
否则{
System.out.println(“无效条目。请输入有效条目”);
类别6();
}
类别6分=分;
类别7();
}   
公共静态无效类7(){
System.out.println(“请输入您在第7类中收到的字母等级(大写字母,即A、B、C、D、F)。”;
grade=letterGrade.next();
如果(等级等于(“A”))
分值=4.0分;
否则,如果(等级等于(“B”))
分值=3.0分;
否则,如果(等级等于(“C”))
分值=2.0;
其他如有需要(职系)
for (int i = 0; i < mySubject.length; i++) {
     your_code_here;
  }
public static char grade;
public static double gpaTotal = 0;
public static int numberOfClasses;

static Scanner scan = new Scanner(System.in);


public static void main(String[] args) {
    System.out.println("Welcome to Adrian's GPA calculator.");
    System.out.println("This program will calculate your weighted and unweighted GPA for this school year.");
    classesNumber();
}


public static void classesNumber() {
    System.out.println("Please enter the number of classes that you are enrolled in for the school year.");
    numberOfClasses = scan.nextInt(); //input is stored in variable numberOfClasses

    if(numberOfClasses >= 9 || numberOfClasses < 2)
        System.out.println("Are you sure you go to ECHS?");

    getClassPoints();
}

public static void getClassPoints () {
    //You dont need the numberOfClasses as parameter because its static.
    for (int i = 0; i < numberOfClasses; i++){
        while (true){
            System.out.println("Please enter the letter grade you have recieved in class " + (i + 1) +"(Uppercase letter i.e. A,B,C,D,F).");
            grade = scan.next().charAt(0);   //unweighted GPA finder
            grade = Character.toLowerCase(grade);
            if (grade == 'a'){
                gpaTotal += 4;
                break;
            }
            else if (grade == 'b'){
                gpaTotal += 3;
                break;
            }
            else if (grade == 'c'){
                gpaTotal += 2;
                break;
            }
            else if (grade == 'd'){
                gpaTotal += 1;
                break;
            }
            else if (grade == 'f'){
                break;
            }
            System.out.println("Invalid entry. Please enter a valid entry.");;
        }
    }
    if (gpaTotal > 0){
        System.out.println("Your unwweighted GPA is: " +  (gpaTotal / numberOfClasses));
    }
    else {
        System.out.println("Too many F grade!");
    }
  }
}