我想我错误地使用了IF语句

Ash*_*rib 1 java if-statement

因此,我正在尝试使用Java制作GPA计算器,而我仍然坚持使用其中一个步骤.我正在尝试编写一个代码,该代码接受用户的输入,然后将其转换为数字,然后我将使用该数字来计算GPA.到目前为止,这是我的代码:

public class data {

    public static void main(String[] args) {

        String english;
        double v1 = 0;


        Scanner reader = new Scanner(System.in);

        System.out.println("Enter your english grade");
        english= reader.nextLine();

        if (strcmp(english,"A+")==0) {
            v1 = 4.4;
        }

        if (strcmp(english,"A")==0) {   
            v1= 4.0;
        }
        if (strcmp(english,"A-")==0) {  
            v1= 3.6;
        }

        if (strcmp(english,"B+")==0) {  
            v1= 3.4;
        }

        if (strcmp(english,"B")==0) {   
            v1= 3;
        }
        if (strcmp(english,"B-")==0) {  
            v1= 2.6;
        }
        if (strcmp(english,"C+")==0) {  
            v1= 2.4;
        }
        if (strcmp(english,"C")==0) {   
            v1= 2;
        }
        if (strcmp(english,"C-")==0) {  
            v1= 1.6;
        }
        if (strcmp(english,"D+")==0) {  
            v1= 1.4;
        }
        if (strcmp(english,"D")==0){    
            v1= 1;
        }

        if (strcmp(english,"D-")==0) {  
            v1= 0.6;
        }
        if (strcmp(english,"F")==0) {   
            v1= 0.0;
        }
        else {

            v1=0.0;
        }


        System.out.println(v1);
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我在最后打印出V1只是为了检查,但是它一直将V1设为0.0,即用户输入"F"时的值.如果我像这样评论那段代码:

/*if (strcmp(english,"F")==0) { 
            v1= 0.0;
        }*/
Run Code Online (Sandbox Code Playgroud)

然后它给出的输出值是0.6,即用户输入D-时的值.我想我应该在某个地方设置一个返回系统?虽然我真的不确定.任何帮助将不胜感激.

(如果它还没有建立,我是java的初学者:P)

编辑:伙计们,当我尝试使用Switch方法(我使用eclipse)时,它给了我这个错误:"无法为1.7以下的源级别打开String类型的值.只允许使用可转换的int值或枚举常量".它提供的解决方案导致进一步的复杂化,所以我想避免切换语句:/

小智 7

    if (strcmp(english,"F")==0) {   
        v1= 0.0;
    }
    else {

        v1=0.0;
    }
Run Code Online (Sandbox Code Playgroud)

除此之外你说 - 只要它不是F,在v1中放0.0.


Bat*_*eba 5

你编写它的方式v1将是0.0,除非english"F".

你需要使用else if:

if (strcmp(english,"A+")==0) {
    v1 = 4.4;
} else if (strcmp(english,"A")==0) {  
     // and so on
Run Code Online (Sandbox Code Playgroud)

有些Java人喜欢switch上弦.但这是Java中一个相当新的特性break,你需要引入的语句可能会混淆.