[英]Convert String to Double?
这是带有测试器类的两部分代码。 由于某些原因,我无法弄清楚如何将该字符串变量转换为正确地参与公式gradeNum = grad-.3和gradeNum = grade + 0.3的代码。 有任何想法吗?
/** This is my class Grade */
public class Grade
{
private String grade;
private double gradeNum;
// Constructor
public Grade(String showGrade)
{
grade = showGrade;
gradeNum = 0;
}
// getNumericGrade method to return grade number
public double getNumericGrade()
{
if (grade.equalsIgnoreCase("A") || grade.equalsIgnoreCase("A+"))
{
gradeNum = 4.0;
}
else if (grade.equalsIgnoreCase("A-"))
{
gradeNum = 3.7;
}
if (grade.equalsIgnoreCase("B"))
{
gradeNum = 3.0;
}
else if (grade.equalsIgnoreCase("B+"))
{
gradeNum = 3.3;
}
else if (grade.equalsIgnoreCase("B-"))
{
gradeNum = 2.7;
}
if (grade.equalsIgnoreCase("C"))
{
gradeNum = 2.0;
}
else if (grade.equalsIgnoreCase("C+"))
{
gradeNum = 2.3;
}
else if (grade.equalsIgnoreCase("C-"))
{
gradeNum = 1.7;
}
if (grade.equalsIgnoreCase("D"))
{
gradeNum = 1.0;
}
else if (grade.equalsIgnoreCase("D+"))
{
gradeNum = 1.3;
}
else if (grade.equalsIgnoreCase("D-"))
{
gradeNum = .7;
}
if (grade.equalsIgnoreCase("F"))
{
gradeNum = 0.0;
}
return gradeNum;
System.out.println("Invalid letter grade");
return -1.0;
}
}
/** This is my class tester
*/
import java. util .Scanner;
/**
This program tests the numeric grade with a given letter grade.
*/
public class GradeTester
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter a letter grade: ");
String showGrade = in.nextLine();
Grade gg = new Grade(showGrade);
System.out.print("Numeric Value: ");
System.out.println(gg.getNumericGrade());
in.close();
}
}
大卫和肯的答案是正确的。 您需要同时实现它们,然后另外删除一些return语句,然后代码才能按预期工作。 这是一个例子:
if (Character.toUpperCase(grade.charAt(0)) == 'B')
gradeNum = 3.0;
if (grade.length() > 1 && Character.toUpperCase(grade.charAt(1)) == '-')
gradeNum = gradeNum - 0.3;
return gradeNum;
之前,由于您正在使用grade.equalsIgnoreCase("B")
检查,因此它永远不会与输入“ B-”匹配。 因此, gradeNum
永远不会具有3.0
的值。 它仍然是0.0
,然后执行gradeNum = gradeNum - 0.3;
结果为-0.3
。
同样,您可以使用切换用例而不是那么多的if语句。 它将更加优雅/可读和高效。
代替if (grade.equalsIgnoreCase("B"))
等,请使用:
if (Character.toUpperCase(grade.charAt(0)) == 'B')
而不是grade.equalsIgnoreCase("A-")
等,请使用:
if (grade.length() > 1 && grade.charAt(1) == '-')
这应该足以使您解决问题。
注意 :还需要进行其他更改,但是我不想只给您正确的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.