我的'如果'声明不正常

时间:2015-11-02 14:33:10

标签: java if-statement

我有一项任务,我应该确定三个值的平均值是否高于平均水平'或者'低于平均水平'出于某种原因,输入的内容总是高于平均值。以下是我的代码,感谢您的帮助!

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");    
    }
}

3 个答案:

答案 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进行测试。 要解决这个问题,请选择以下两条路径之一。

  1. 替换所有百分比的百分比。这意味着输入从0到1的数字。 为此,请执行以下操作:
    更改double t = (double)Math.round(1000*((x+y+z)/3)) / 1000的t初始化这将使T在0到1之间,精确到3位数 将if替换为if (t >= 0.895)

  2. 用百分比替换所有的perunages。这意味着输入0到100之间的数字 为此,请从double t = (double)Math.round(100*((x+y+z)/3));中删除100 *,从输出消息中删除/ 100.