int leccs1 = q1+q2+r1+swhw1;
System.out.println("LecCS = "+ leccs1+ "/60");
int lecprelim = lcp+lcpo;
System.out.println("LecPrelim = "+ lecprelim+ "/100");
double x = 0.50;
int lecgrade = ((x * leccs1) + (x * lecprelim));
System.out.println("LecGrade = "+ lecgrade);
C:\FINALS OBE\OBE1\ICS112_1ISB_LecFinals_OBE.java:61: error: possible loss of precision
int lecgrade = ((x * leccs1) + (x * lecprelim));
^
required: int
found: double
1 error
Process completed.
我正在努力计算成绩。用户输入成绩作为输入。我希望x
加倍而不是int。
答案 0 :(得分:4)
变化
int lecgrade = ((x * leccs1) + (x * lecprelim));
到
double lecgrade = ((x * leccs1) + (x * lecprelim));
int grade=lecgrade.intValue();
或单行,您可以写
int lecgrade = ((x * leccs1) + (x * lecprelim)).intValue();
使用intValue()
将double
转换为int
答案 1 :(得分:1)
我所知道的是你希望lecgrade作为一个int你可以通过类型转换
来做到这一点试试这个,
int lecgrade =(int) ((x * leccs1) + (x * lecprelim));
答案 2 :(得分:1)
如果你需要lecgrade为int类型,你可能想在转换之前应用一些舍入,例如:
double lecgrade = 1.9d;
int result = (int) lecgrade;
int resultRounded = (int) Math.round(lecgrade);
System.out.println(result); // prints 1
System.out.println(resultRounded); // prints 2
请注意
intValue()可能会截断您的值而不是舍入它
Double k = Double.valueOf(1.9d);
System.out.println(k.intValue()); // prints 1 for me