1
import java.text.*;
import java.util.*;
public class Proj3 {
    public static void main(String[]args){
     // DecimalFormat df = new DecimalFormat("#0.00”);
     Scanner s = new Scanner(System.in);
     int TotalHours = 0;
     int TotalGrade = 0;

     System.out.print("How many courses did you take? ");
     int Courses = Integer.parseInt(s.nextLine());
     System.out.println("");

     int CourseNumber = Courses - (Courses - 1);
     while (Courses > 0){
         System.out.print("Course (" + CourseNumber +"): How many hours? ");
         int Hours = Integer.parseInt(s.nextLine());
         TotalHours = TotalHours + Hours;

         System.out.print("Course (" + CourseNumber +"): Letter grade? ");
         char Grade = s.nextLine().charAt(0);

         if (Grade == 'A'){
             TotalGrade = TotalGrade + (4 * Hours);
            }
         if (Grade == 'B'){
             TotalGrade = TotalGrade + (3 * Hours);
            }
         if (Grade == 'C'){
             TotalGrade = TotalGrade + (2 * Hours);
            }
         if (Grade == 'D'){
             TotalGrade = TotalGrade + (1 * Hours);
            }

         Courses = Courses - 1;
         CourseNumber = CourseNumber + 1;
        }
     Double GPA = TotalGrade / TotalHours;
     System.out.println(df.format(GPA));

    }
}

これは課題のためであり、問​​題を解決する方法がわかりません。Double GPA = TotalGrade / ToutalHours;行にエラーが発生していIncompatible Typesます。

またDecimalFormat df = new DecimalFormat("#0.00”);、メインの先頭に行を含めることになっていますが、機能していません。

何でもとても助かります。ありがとう

4

4 に答える 4

3
 Double GPA = TotalGrade / TotalHours;

Autoboxingプリミティブ型とそれに対応するオブジェクト ラッパー クラスとの間で Java コンパイラが行う自動変換です。したがって、Doubleはプリミティブのラッパー クラスであり、プリミティブのラッパー クラスです。doubleIntegerint

TotalGrade / TotalHours結果は になりintますが、それを type のオブジェクトに割り当てようとしていますDouble。次のいずれかを行います。

double GPA = (double)TotalGrade / TotalHours;

また、

Double GPA = (double)TotalGrade / TotalHours;
于 2013-10-26T03:35:10.137 に答える
1

ラッパー クラスを使用していますDouble。あなたの変数TotalGrade / ToutalHoursはプリミティブ型intです。したがって、それらは互換性がありません。プリミティブ double を使用すると、この問題が解決されます。

double GPA = TotalGrade / ToutalHours;

DecimalFormat問題についても同じで、formatメソッドは wrapper を受け入れませんDouble。したがって、プリミティブを使用doubleすると問題が解決します。

于 2013-10-26T03:40:09.433 に答える
1

あなたのコードには2つの問題があります

  1. Java では型の昇格が許可されていますが、int 値を Double に昇格させようとしていますが、これは不可能です。これは、次の 2 つの方法で解決できます。

Double GPA = TotalGrade / TotalHours を変更します。

ダブル GPA = (ダブル)TotalGrade / TotalHours; //これは明示的な型キャストです

または double GPA = TotalGrade/ TotalHours // このタイプのプロモーション

2つ目の問題は

// DecimalFormat df = new DecimalFormat("#0.00”);

この行で、閉じ引用符が間違っていることを確認してください。"

于 2013-10-26T03:45:15.680 に答える
0

int を Wrapper クラスの Double に変換しようとしています。

交換

Double GPA = TotalGrade / TotalHours;

double GPA = TotalGrade /TotalHours;

そして、あなたは書くことができます

NumberFormat formatter = new DecimalFormat("#0.000");

必要に応じてメインの冒頭で、次のように印刷します

System.out.println("The Decimal Value is:"+formatter.format(GPA));
于 2013-10-26T03:43:23.833 に答える