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”);
行,但它不起作用。
任何事情都非常有帮助。谢谢
最佳答案
Double GPA = TotalGrade / TotalHours;
Autoboxing
是 Java 编译器在原始类型和它们相应的对象包装器类之间进行的自动转换。因此 Double
是原语 double
的包装类,Integer
是原语 int
的包装类。
您的 TotalGrade/TotalHours
生成的是 int
,但您试图将其分配给类型为 Double
的对象。执行以下任一操作:
double GPA = (double)TotalGrade / TotalHours;
或者,
Double GPA = (double)TotalGrade / TotalHours;
关于Java:不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19602483/