我有一项任务,我应该确定三个值的平均值是否高于平均水平'或者'低于平均水平'出于某种原因,输入的内容总是高于平均值。以下是我的代码,感谢您的帮助!
import java.util.Scanner;
class Lesson_12_Activity_One {
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter three values");
double x = scan.nextDouble();
double y = scan.nextDouble();
double z = scan.nextDouble();
double t = (double)Math.round(100*((x+y+z)/3));
System.out.print("The average is " + (t/100));
if(t >= 89.5)
System.out.print(" ABOVE AVERAGE");
else
System.out.print(" BELOW AVERAGE");
}
}
答案 0 :(得分:2)
平均值为t/100
,但在您的情况下,您会测试t > 89.5
是否为t
,因为double t = Math.round((x+y+z)/3);
System.out.print("The average is " + t);
if(t >= 89.5)
System.out.print(" ABOVE AVERAGE");
else
System.out.print(" BELOW AVERAGE");
}
是平均值乘以100)。
只需删除乘法100和除以100.它们似乎没必要。
bootstrap v4 alpha
答案 1 :(得分:0)
if(t/100 >= 89.5)
System.out.print(" ABOVE AVERAGE");
else
System.out.print(" BELOW AVERAGE");
顺便说一下你为什么要乘以然后除以100?
答案 2 :(得分:0)
我猜你们正在混淆团聚和百分比。这意味着,在你的程序中的某一点,你使用0.5,而在另外50,这两者都是50%。
double t = (double)Math.round(100*((x+y+z)/3));
System.out.print("The average is " + (t/100));
x,y和z全部为50,这将输出50. t = 100 * (50 + 50 + 50)/3 = 5000
,输出为(t/100) = 50
。
if(t >= 89.5)
然而使用t = 5000
进行测试。
要解决这个问题,请选择以下两条路径之一。
替换所有百分比的百分比。这意味着输入从0到1的数字。
为此,请执行以下操作:
更改double t = (double)Math.round(1000*((x+y+z)/3)) / 1000
的t初始化这将使T在0到1之间,精确到3位数
将if
替换为if (t >= 0.895)
用百分比替换所有的perunages。这意味着输入0到100之间的数字
为此,请从double t = (double)Math.round(100*((x+y+z)/3));
中删除100 *,从输出消息中删除/ 100.