2017-09-25 63 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