这是一个包含测试器类的两部分代码。由于某种原因,我无法弄清楚如何将此字符串变量转换为正确参与方程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();
}
}
最佳答案
不要使用 if (grade.equalsIgnoreCase("B"))
等,而是使用:
if (Character.toUpperCase(grade.charAt(0)) == 'B')
并且不要使用 grade.equalsIgnoreCase("A-")
等,而是使用:
if (grade.length() > 1 && grade.charAt(1) == '-')
这应该足以让您解决问题。
注意:还需要进行其他更改,但我不想只是给您提供正确的代码。
关于java - 将字符串转换为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26748440/