Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GPA课程的字母等级_Java - Fatal编程技术网

Java GPA课程的字母等级

Java GPA课程的字母等级,java,Java,这里是Java初学者。所以我一直在想我该怎么做,如果用户输入是“A+”,我会得到4.0而不是更高?类似地,对于“F”,我想让它,使F,F-,F+都得到0.0GPa。我想要么我要为字母A和F设置特殊参数,要么只是在GPA上写一个“限制”或“上限”。我的意思是使我的双“gpa”只能是0-4.0。您认为最有效的两种方法都很好,我对Java的语法和词汇非常不熟悉,甚至不知道从哪里开始 这是我的密码: import java.util.*; public class HomeworkCalculator

这里是Java初学者。所以我一直在想我该怎么做,如果用户输入是“A+”,我会得到4.0而不是更高?类似地,对于“F”,我想让它,使F,F-,F+都得到0.0GPa。我想要么我要为字母A和F设置特殊参数,要么只是在GPA上写一个“限制”或“上限”。我的意思是使我的双“gpa”只能是0-4.0。您认为最有效的两种方法都很好,我对Java的语法和词汇非常不熟悉,甚至不知道从哪里开始

这是我的密码:

import java.util.*;
public class HomeworkCalculator {
    public static void main(String[] args) {
        Scanner in = new Scanner(System. in );
        String grade, letter1, letter2;
        System.out.print("Enter a letter grade: ");
        grade = in .nextLine();
        letter1 = grade.substring(0, 1);
        letter2 = grade.substring(1, 2);

        double gpa = 0;

        if (letter1.equals("A")) {
            gpa = 3.9;
        } else if (letter1.equals("B")) {
            gpa = 3.0;
        } else if (letter1.equals("C")) {
            gpa = 2.1;
        } else if (letter1.equals("D")) {
            gpa = 1.2;
        } else if (letter1.equals("F")) {
            gpa = 0;
        }

        if (letter2.equals("+")) {
            System.out.println(gpa + 0.3);
        } else if (letter2.equals("-")) {
            System.out.println(gpa - 0.3);
        }


    }
}
在程序结束时,我尝试将用户输入“A+”单独编码为仅等于4.0,但当我只需要1个值时,输出仅为4.0,然后为4.2。然后,我尝试添加一个中断或返回,看看是否可以这样做,如果输入是“a+”,它会自动在此时此地结束代码——希望阻止任何额外的输出发生,但没有发生


有什么建议吗?

另一种可能性是,在整个代码部分的末尾,您可以添加:

if (letter1.equals("A") && letter2.equals("+")) gpa = 4.0;
else if(letter1.equals("A"))
{gpa = 3.9;}
else if(letter1.equals("B")) 
{gpa = 3.0;}
else if(letter1.equals("C"))
{gpa = 2.1;}
else if(letter1.equals("D"))
{gpa = 1.2;}
else if(letter1.equals("F"))
{gpa = 0;}

if (!letter1.equals("F")) {
    if(letter2.equals("+") && !letter1.equals("A")) gpa += 0.3;
    else if(letter2.equals("-")) gpa -= 0.3;
}
if (gpa > 4) gpa = 4;
if (gpa < 0) gpa = 0;
if (letter1.equals("F") && letter2.equals("+")) gpa = 0;
如果(gpa>4)gpa=4;
如果(gpa<0)gpa=0;
如果(字母1.等于(“F”)&字母2.等于(“+”)gpa=0;
这里的原始解决方案:

package testgrade;

import java.util.*;

public class Tg {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String grade;
    System.out.print("Enter a letter grade: ");
    grade = in.nextLine();
    double gpa = 0.0;
    boolean bad_entry = false;
    int entered_grade_len = grade.length();
    // Verify entered content
    if (entered_grade_len <= 2 && entered_grade_len > 0) {
        if((grade.substring(0).toUpperCase() == "A") ||
           (grade.substring(0).toUpperCase() == "B") ||
           (grade.substring(0).toUpperCase() == "C") ||
           (grade.substring(0).toUpperCase() == "D") ||
           (grade.substring(0).toUpperCase() == "F"))
        {
            switch(entered_grade_len)
            {
            case 2:
                if((grade.substring(1) == "+") ||
                   (grade.substring(0).toUpperCase() == "-"))
                break;
            default:
                bad_entry = true;
                break;
            }

        }
    }
    if(bad_entry)
    {
        System.out.println("Usage: Enter grades in the normal spectrum from A(+/-) to F");
        System.out.println("eg: A+, B-, D+, C, F...");
        return;
    }
    String lettergrade = grade.substring(0,1).toString().toUpperCase();
    switch (lettergrade) {
    case "A":
        gpa = 4.0;
        break;
    case "B":
        gpa = 3.0;
        break;
    case "C":
        gpa = 2.0;
        break;
    case "D":
        gpa = 1.0;
        break;
    case "F":
        gpa = 0.0;
        break;
    default:
        break;
    }
    if (grade.length() > 1) {
        lettergrade = grade.substring(1, 2);
        switch (lettergrade) {
        case "+":
            if (gpa <= 3 && gpa >= 1.0)
                gpa += 0.3;
            break;
        case "-":
            if (gpa <= 4 && gpa >= 1.0)
                gpa -= 0.3;
            break;
        default:
            break;
        }
    }
    System.out.println(gpa);
    in.close();
}
}
包测试等级;
导入java.util.*;
公共类Tg{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
串级;
System.out.print(“输入字母等级:”);
等级=in.nextLine();
双gpa=0.0;
布尔坏项=假;
输入的int_grade_len=grade.length();
//验证输入的内容
如果(输入等级为0){
if((grade.substring(0.toUpperCase()=“A”)||
(grade.substring(0.toUpperCase()=“B”)||
(grade.substring(0.toUpperCase()=“C”)||
(grade.substring(0.toUpperCase()=“D”)||
(grade.substring(0.toUpperCase()=“F”))
{
开关(输入等级)
{
案例2:
如果((等级子字符串(1)=“+”)||
(grade.substring(0.toUpperCase()==“-”))
打破
违约:
输入错误=正确;
打破
}
}
}
如果(输入错误)
{
System.out.println(“用法:在A(+/-)到F的正常光谱中输入等级”);
系统输出println(“例如:A+,B-,D+,C,F…”);
返回;
}
String lettergrade=grade.substring(0,1).toString().toUpperCase();
开关(字母级){
案例“A”:
平均绩点=4.0;
打破
案例“B”:
平均绩点=3.0;
打破
案例“C”:
gpa=2.0;
打破
案例“D”:
gpa=1.0;
打破
案例“F”:
gpa=0.0;
打破
违约:
打破
}
如果(坡度长度()>1){
字母等级=等级。子字符串(1,2);
开关(字母级){
格“+”:
如果(gpa=1.0)
gpa+=0.3;
打破
案例“-”:
如果(gpa=1.0)
gpa-=0.3;
打破
违约:
打破
}
}
系统输出打印项次(gpa);
in.close();
}
}

通过使用一些正则表达式进行比较,这一点可以得到很大的改进,但对于快速和肮脏来说,它是有效的。(A=3.9?呸…但是你可以像上面那样做,如果gpa=4,grade.length()=1)gpa-=0.1)

如果这是我的代码,我会创建一个枚举,比如称为grade,并将每个字符串与一个数值和一个枚举常量相关联。没有骰子,仍然会给我4.2表示A+,3表示F+,-.3表示F-。因为你在你的部分末尾打印出加上或减去3的值,而不是改变变量本身。不确定你的意思是什么?我在最后添加了代码,但仍然给出了错误的值。我在你的附录末尾添加了一个打印函数,这样我就可以得到结果了。这是可行的,但我又得到了2 gpa。将第一个print语句替换为那些if/else语句的另一个答案中的代码。实际上没有必要,我最终按照您之前的建议做了(将System.print.out(gpa+-.03)中的gpa=gpa+-.03更改为gpa+-.03).我刚移动了系统。一直打印到最后。我觉得很傻,但我想这就是我的教授所说的编码的全部内容。然后马上打印出来。例如,复制这行:System.out.println(gpa);这对我来说太高了,我会尝试分解你的解决方案来学习一些新东西。