Хочу создать условия для вывода информации о пассажирах:
Не может быть меньше нуля.
Если равняется нулю то автобус пуст.
Не может быть больше вместимости автобуса.
Но не могу установить третье условие, так как после его установки, при проверке двух других, возникает текст который должен быть только при 3 условии.
package programm;
public class Programm {
public static void main(String[] args) {
Avtobus bus = new Avtobus("Calculator");
bus.setName(666); //Номер автобуса
bus.setNumberOfPassengers(50); //Количество пассажиров
bus.setCostOfTravel(30); //Цена поездки
bus.setNumberOfStops(10); //Количество Остановок
bus.setTheCapacityOfTheBus(50); //Вместимость автобуса
bus.Stopped(); //Остановка
bus.info1(); //Первая остановка.Осталось остановок
bus.info2(); //Кол-во пассажиров
bus.NumberOfAvailableSeats(); //Кол-во свободных мест
bus.info3(); //Прибыль с одной остановки
bus.CalculationOfProfit(); //Подсчет конечной прибыли
package newobject;
public class Avtobus {
private int Name;
private int NumberOfPassengers;
private int CostOfTravel;
private int NumberOfStops;
private int TheCapacityOfTheBus;
private String Calculator;
protected Avtobus(){
}
public Avtobus(String Calculator) {
this.Calculator = Calculator;
on();
}
public Avtobus(int Name, int NumberOfPassengers, int CostOfTravel, int NumberOfStops, int TheCapacityOfTheBus){
this.Name = Name;
this.NumberOfPassengers = NumberOfPassengers;
this.CostOfTravel = CostOfTravel;
this.NumberOfStops = NumberOfStops;
this.TheCapacityOfTheBus = TheCapacityOfTheBus;
}
public int getNumberOfPassengers(){
return NumberOfPassengers;
}
public void setNumberOfPassengers(int nNumberOfPassengers){
if (nNumberOfPassengers<0){
System.out.println("!!Количество пассажиров не может быть меньше нуля!!");
}else{
NumberOfPassengers = nNumberOfPassengers;
}
if(nNumberOfPassengers ==0){
System.out.println("Автобус пуст");
}else{
NumberOfPassengers = nNumberOfPassengers;
}
if(nNumberOfPassengers>TheCapacityOfTheBus){
System.out.println("!!Количество пассажиров не может быть больше чем вместимость
автобуса!! ");
}
}
Иногда применение оператора return
даже в void
методах помогает избежать множественных if else
и сделать код с условиями гораздо более читаемым.
public void setNumberOfPassengers(int nNumberOfPassengers){
// первое негативное условие - метод работать не может
if (nNumberOfPassengers < 0) {
System.out.println("!!Количество пассажиров не может быть меньше нуля!!");
return;
}
// второе негативное условие - метод работать не может
if (nNumberOfPassengers == 0) {
System.out.println("Автобус пуст");
return;
}
// третье негативное условие - метод работать не может
if (nNumberOfPassengers > TheCapacityOfTheBus) {
System.out.println("!!Количество пассажиров не может быть больше чем вместимость автобуса!!");
return;
}
// если мы не вывалились из метода в одной из предыдущих проверок
// выполняем основную работу метода
NumberOfPassengers = nNumberOfPassengers;
System.out.println("Ты угадал сколько человек может быть в автобусе! Как #%$# ты это сделал?!! оО");
}
Любое условие, дающее однозначный результат работы метода можно снабжать собственным return
.
Кроме else
есть еще else if
:
public void setNumberOfPassengers(int nNumberOfPassengers)
{
if (nNumberOfPassengers < 0)
{
System.out.println("!!Количество пассажиров не может быть меньше нуля!!");
}
else if (nNumberOfPassengers == 0)
{
System.out.println("Автобус пуст");
}
else if (nNumberOfPassengers > TheCapacityOfTheBus)
{
System.out.println("!!Количество пассажиров не может быть больше чем вместимость автобуса!!");
}
else
{
NumberOfPassengers = nNumberOfPassengers;
}
}
Kоличество пассажиров Вы устанавливаете до того, как задаете вместимость:
bus.setNumberOfPassengers(50); //Количество пассажиров
...
bus.setTheCapacityOfTheBus(50); //Вместимость автобуса
а надо - после:
...
bus.setTheCapacityOfTheBus(50); //Вместимость автобуса
bus.setNumberOfPassengers(50); //Количество пассажиров
Попробую предложить такой дизайн кода:
int busCapacity;
int numberOfPassenger;
public void setNumberOfPassengers(int amount){
if ((amount < 0)||( busCapacity < amount))
System.out.println("ERROR");
else if (amount == 0)
System.out.println("Bus is empty");
else
numberOfPassenger = amount;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как в Java преобразовать Date в Long, если Date до 1970 года?
Кто может объяснить в данном коде значение action(current) в цикле? Я понимаю, что туда подставляется функция, но как? Почему в скобках current, когда...