我與創建該用戶(通過A + D-)輸入一個檔次的Java程序的任務,並得到一個得分(0.7至4.3)使用switch/if語句將字母等級與數字等級相比較?
如果用戶輸入 「A」,他們得到4。 ...「B」= 3 ....「C」= 2 ....「D」= 1.
如果用戶在字母后輸入「+」或「 - 」最後得分是通過0.3遞增或遞減
因此,例如,如果用戶輸入「C +」,他們回來的得分爲「2.3」
到目前爲止,只有在用戶不添加「+」或「 - 」的情況下才能使用。
所以,如果用戶只輸入一個字母,它的作品。
出於某種奇怪的原因,如果用戶在字母后輸入「+」或「 - 」,輸出將分別爲「0.3」或「-0.3」。
我不知道爲什麼。我的AP Comp Sci老師和我很難過。
這裏是我的代碼相關剪斷
String letterGrade;
double numericGrade;
Scanner reader = new Scanner(System.in);
public boolean getLetterGrade()
{
System.out.print("Enter a letter grade: ");
letterGrade = reader.nextLine();
return (letterGrade.length() < 3) && (("+".equals(letterGrade.substring(1))) || ("-".equals(letterGrade.substring(1))) || (letterGrade.length() == 1));
}
public double getNumericGrade()
{
numericGrade = 0.0;
switch(letterGrade.substring(0).toUpperCase())
{
case "A":
numericGrade += 4.0;
break;
case "B":
numericGrade += 3.0;
break;
case "C":
numericGrade += 2.0;
break;
case "D":
numericGrade += 1.0;
break;
case "F":
numericGrade += 0.0;
break;
}
if ("-".equals(letterGrade.substring(1)))
numericGrade -= 0.3;
if ("+".equals(letterGrade.substring(1)))
numericGrade += 0.3;
return numericGrade;
}
我的猜測是numericGrade
是switch語句之後得到重置爲0,因爲沒有明顯的理由給我。
嘗試利用你的IDE爲您提供了調試功能,並通過一步看什麼'numericGrade'是每一步的方式。 –
switch語句永遠不會以「A +」成功,因爲substring(0)獲取整個字符串,而不僅僅是第一個字符 –