2017-09-25 74 views
0

您好我正在制作一个程序,应该把一个字母等级,并将其转换为GPA值。该计划的第一部分采取了一个百分比,并将其转换为字母等级,现在我试图将转换后的字母等级转换为int值。我们只允许使用开关盒。但是,当我这样做时,我得到一个不兼容的类型错误:java.lang.String required:int。不知道我需要改变什么,有什么帮助?使用开关的情况下不兼容的类型错误

感谢

public static int convertToGradePoint(String letterGrade) { 

    int gradepoint; 

    switch (letterGrade) { 

    case "A+" : 
    gradepoint = 12; 
    break; 

    case "A" : 
    gradepoint = 11; 
    break; 

    case "A-" : 
    gradepoint = 10; 
    break; 

    case "B+" : 
    gradepoint = 9; 
    break; 

    case "B" : 
    gradepoint = 8; 
    break; 

    case "B-" : 
    gradepoint = 7; 
    break; 

    case "C+" : 
    gradepoint = 6; 
    break; 

    case "C" : 
    gradepoint = 5; 
    break; 

    case "C-" : 
    gradepoint = 4; 
    break; 

    case "D+" : 
    gradepoint = 3; 
    break; 

    case "D" : 
    gradepoint = 2; 
    break; 

    case "D-" : 
    gradepoint = 1; 
    break; 

    default : 
    gradepoint = 0; 
    break; 
} 

return gradepoint; 


    } 
    } 
+2

的Java版本使用的是使用??? –

+0

为什么不把所有的字母等级和他们的“成绩点”值放到'Map '中,并且完全跳过'switch'? – NRitH

+0

也许摆脱最后一个大括号。 – DevilsHnd

回答

0

你没有张贴足够的代码。你可能这样做如下:

String a = convertToGradePoint(input); 

你需要这样做:

int a = convertToGradePoint(input); 
0

报价Java Doc

在Java SE 7和更高版本,可以在使用String对象开关 声明的表达

这意味着,您的JDK版本是< 7.您可以获取最新版本的JDK来编译相同的代码。

+0

关于如何让它在Java博士上运行的任何想法。我在我的电脑上运行Java 8,但Dr Java只运行JDK 6,我不知道如何更新它。 – JVAN

+0

@JVAN,可能检查你的'PATH'变量,看看它是否使用'java 6'路径。 – Ravi

0

除非您有Java7 +,否则不能切换String实例,只能使用int(和byte/char/short,但不能使用long/double)。

替代的是,如果如下

if(letterGrade.equals("A+")){ 
gradepoint = 12; 
} 

或升级您的Java