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”);
行,但它不起作用。
任何事都非常有帮助。感谢
答案 0 :(得分:3)
Double GPA = TotalGrade / TotalHours;
Autoboxing
是Java编译器在基元类型和相应的对象包装类之间进行的自动转换。因此Double
是原始double
的包装类,而Integer
是原始int
的包装类。
您的TotalGrade / TotalHours
产生int
,但您尝试将其分配给类型为Double
的对象。做其中之一:
double GPA = (double)TotalGrade / TotalHours;
或,
Double GPA = (double)TotalGrade / TotalHours;
答案 1 :(得分:1)
您正在使用包装器类Double
。虽然变量TotalGrade / ToutalHours
是原始类型int。因此它们是不相容的。使用原始double将解决这个问题。
double GPA = TotalGrade / ToutalHours;
DecimalFormat
问题相同,format
方法不接受包装器Double
。因此,当您使用原始double
时,它将解决问题。
答案 2 :(得分:1)
您的代码中存在两个问题
更改您的双倍GPA = TotalGrade / TotalHours;
加倍GPA =(双倍)TotalGrade / TotalHours; //这是明确的 铸造
或双倍GPA = TotalGrade / TotalHours //此类促销
第二个问题是
// DecimalFormat df = new DecimalFormat("#0.00”);
在此行中,请看结尾引用其错误的更改为"
答案 3 :(得分: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));