簡體   English   中英

將字符串轉換為雙精度嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM