【发布时间】:2015-12-22 02:11:05
【问题描述】:
我的任务是创建一个 java 程序,用户在其中输入等级(D- 到 A+)并获得分数(0.7 到 4.3)
-
如果用户输入“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) 获取整个字符串,而不仅仅是第一个字符
标签: java string if-statement int switch-statement