有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

共 (3) 个答案

  1. # 1 楼答案

    平均值是t/100,但在您的条件下,您可以测试t > 89.5(这总是正确的,因为t是平均值乘以100)

    只需去掉乘100和除100。它们似乎没有必要

    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");    
    }
    
  2. # 2 楼答案

    if(t/100 >= 89.5)     
       System.out.print(" ABOVE AVERAGE");
     else
       System.out.print(" BELOW AVERAGE"); 
    

    顺便问一下,你为什么要乘然后除以100

  3. # 3 楼答案

    我猜你把收入和百分比搞混了。这意味着,在程序的某一点上,你使用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时,这将输出50t = 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 (t >= 0.895)替换你的if

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