java My'if'语句工作不正常
我有一个任务,我应该确定三个值的平均值是“高于平均值”还是“低于平均值”。由于某种原因,无论输入什么,结果总是高于平均水平。下面是我的代码,谢谢你的帮助
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");
}
}
# 1 楼答案
平均值是
t/100
,但在您的条件下,您可以测试t > 89.5
(这总是正确的,因为t
是平均值乘以100)只需去掉乘100和除100。它们似乎没有必要
# 2 楼答案
顺便问一下,你为什么要乘然后除以100
# 3 楼答案
我猜你把收入和百分比搞混了。这意味着,在程序的某一点上,你使用0.5,在另一点上使用50%,两者都是50%
当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 (t >= 0.895)
替换你的if
用百分比替换所有百分比。这意味着输入从0到100的数字
为此,请从
double t = (double)Math.round(100*((x+y+z)/3));
中删除100*,并从输出消息中删除/100