2015-11-02 2 views
1

У меня есть задание, в котором я должен определить, является ли среднее значение трех значений «выше среднего» или «ниже среднего». По какой-то причине любой вход всегда будет выше среднего. Вот мой код ниже, спасибо за любую помощь!Оператор «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");  
    } 
} 
+0

Вы можете поделиться некоторыми входными значениями, которые вы пробовали? где ожидаемый результат был ниже среднего? – AbtPst

+0

Может быть, это всегда выше 89,5? – Maroun

ответ

2

В среднем это 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");  
} 
+0

Спасибо! Я действительно новичок в кодировании в целом, поэтому я много испортил, округляя число до определенного места. –

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

, кстати, почему вы умножения и деления на 100?

0

Я собираюсь угадать, что вы смешиваете пернации и проценты. Это означает, что в какой-то момент вашей программы вы используете 0,5, а в остальных 50 - как 50%.

double t = (double)Math.round(100*((x+y+z)/3)); 

    System.out.print("The average is " + (t/100)); 

С х, у и г всего, как 50, это будет выводить 50. t = 100 * (50 + 50 + 50)/3 = 5000, выход (t/100) = 50.

if(t >= 89.5) однако испытания с t = 5000. Чтобы решить эту проблему, спуститесь по одному из двух путей.

  1. Заменить все проценты для пернатых. Это означает ввод чисел от 0 до 1. Для этого выполните следующие действия:
    измените вашу t-инициализацию на double t = (double)Math.round(1000*((x+y+z)/3))/1000. Это будет делать T между 0 и 1 с точностью до 3 цифр.
    Замените if с if (t >= 0.895)

  2. Заменить все perunages с процентами. Это означает ввод чисел от 0 до 100.
    Для этого удалите 100 * из вашего double t = (double)Math.round(100*((x+y+z)/3)); и/100 из выходного сообщения.

Смежные вопросы