Не работает if. Помогите, написал что-то не то
Вроде всё верно написано, а в консоли, при вводе правильных значений, пишет "Предел скоростиКритическое давлениеВсё в норме", а должен "Всё в норме" Задача (На вход функции поступают данные с некоего объекта: скорость движения (в км/ч) и давление (в единицах физ. атм.). Функция выполняет анализ данных следующим образом:
Если скорость превышает 50 км/ч, то выводится сообщение Предел скорости.
Если объект не двигается и давление больше или равно двум атмосферам, то выводится сообщение Критическое давление.
В противном случае выводится сообщение Всё в норме.)
import java.util.Scanner;
public class First_Task {
static void Header() {
System.out.println("Анализ показателей");
System.out.println("-----------------");
}
static int InputNumber(String caption) {
System.out.print(caption);
Scanner sc = new Scanner(System.in);
return sc.nextInt();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//title
Header();
//data entry
int n1 = InputNumber("Введите скорость движения (в км/ч) : ");
int n2 = InputNumber("Введите давление (в единицах физ. атм.): ");
//Result
if (n1 > 50)
System.out.print("Предел скорости");
else
System.out.print("");
if (n2<=0 && n2>=2);
System.out.print("Критическое давление");
System.out.println("Всё в норме");
}
}
Ответы (2 шт):
String status = "Всё в норме";
if (n1 > 50) status = "Предел скорости";
if (n1 == 0 && n2 >= 2) status = "Критическое давление";
System.out.println(status);
Можно реализовать одной строкой через тернарный оператор:
System.out.println((n1 > 50) ? "Предел скорости" : ((n1 == 0 && n2 >= 2) ? "Критическое давление" : "Всё в норме"));
Потому что лишние точка с запятой и невыполнимое условие.
if (n1 > 50)
System.out.print("Предел скорости");
else
System.out.print("");
if (n2<=0 && n2>=2); // после if стоит ;
// кроме того - условие никогда не выполняется
// видимо должно быть
if (n2<=0 || n2>=2)
System.out.print("Критическое давление");
System.out.println("Всё в норме");
видимо вы хотели написать так:
if (n1 > 50)
System.out.print("Предел скорости");
else
if (n1==0 && n2>=2)
System.out.print("Критическое давление");
else
System.out.println("Всё в норме");
но вариант из ответа @АлексейР c переменной status - красивее.