2013-01-23 147 views
-6

我有一個switch語句,它取得字母等級並返回相應的GPA;但是,它會爲字母(A,B,C,D & F)拋出無法找到符號的錯誤!我已經檢查了javaDocs的指導,但無法找到錯誤。什麼導致了這個錯誤?Switch語句(字符)

switch (grade) { 
     case A: nv[i] = 4; //nv = numerical value 
       break; 
     case B: nv[i] = 3; 
       break; 
     case C: nv[i] = 2; 
       break; 
     case D: nv[i] = 1; 
       break; 
     case F: nv[i] = 0; 
       break; 
    } 
+0

有沒有問題... –

+0

我修改了我的問題..對不起! – InspiringProgramming

回答

10

A不是一個有效的字符文字 - 'A'是。

所以,你想:

switch (grade) { 
    case 'A': nv[i] = 4; //nv = numerical value 
      break; 
    case 'B': nv[i] = 3; 
      break; 
    case 'C': nv[i] = 2; 
      break; 
    case 'D': nv[i] = 1; 
      break; 
    case 'F': nv[i] = 0; 
      break; 
} 

你也應該可能有情況默認情況下檔次並不其中之一。

哦,你的代碼也可以寫成:

nv[i] = "FDCBA".indexOf(grade); 

用支票nv[i]存在-1之後(這意味着檔次並沒有在集)。

+1

所以很快你得到了問題:) –

+0

我不明白如何檢查'nv [i]'是-1?你是什​​麼意思? – InspiringProgramming

+0

@ InspiringProgramming:我的意思是,在我更簡單的方法中,如果未找到'grade',則'indexOf'將返回-1 ...因此'nv [i]'將爲-1。所以爲了檢測,你會使用'if(nv [i] == -1){...}' –