Прежде чем начать, я хотел бы заявить, что я очень начинаю, когда дело доходит до написания кода вообще, поэтому я извиняюсь, если то, что я прошу, может показаться чрезвычайно простым.Новичок Java: возвращаемые значения из методов
С учетом сказанного я борюсь с возвращающимися методами в своем коде. Я могу написать эту программу, не разбивая ее на методы, как я, но мне сказали, что при кодировании хорошая практика заключается в том, чтобы разделить ее на методы, чтобы отладка была проще.
В следующем коде есть несколько основных недостатков.
public static boolean hybridNot()
{
String typeCar = input("Hybrid or Electric?");
boolean electric = false;
if (typeCar.equalsIgnoreCase("Electric"))
{
electric = true;
}
else if (typeCar.equalsIgnoreCase("Hybrid"))
{
electric = false;
}
else
{
print("Sorry I didn't understand that");
}
return;
}
public static boolean solarNot()
{
String panelsMaybe = input("Solar panel?");
boolean solarPanel = false;
if (panelsMaybe.equalsIgnoreCase("Yes"))
{
solarPanel = true;
}
else if (panelsMaybe.equalsIgnoreCase("No"))
{
solarPanel = false;
}
else
{
print("Sorry I didn't understand that");
}
return;
}
public static int discountNot()
{
final int basicPrice = 20000;
final int electricCost = 2000;
final int solarCost = 5000;
boolean electric = hybridNot();
boolean solarPanel = solarNot();
int totalPrice;
if ((solarPanel = true) || (electric = true))
{
totalPrice = basicPrice + solarCost + electricCost - 500;
}
else if ((solarPanel = true) || (electric = false))
{
totalPrice = basicPrice + solarCost;
}
else if ((solarPanel = false) || (electric = true))
{
totalPrice = basicPrice + electricCost;
}
else
{
totalPrice = basicPrice;
}
return;
}
public static void totalCost()
{
final int basicPrice = 20000;
final int electricCost = 2000;
final int solarCost = 5000;
final int discountCost = 500;
boolean hybrid = hybridNot();
boolean solarPanel = solarNot();
int finalPrice = 0;
finalPrice = discountNot();
if (finalPrice >= 26500)
{
print("Basic Price: " + basicPrice + "\n" + "Electric model: " + electricCost + "\n" + "Solar Panel: " + solarCost + "\n" + "Discount: " + discountCost);
}
else if (finalPrice >= 25000)
{
print("Basic Price: " + basicPrice + "\n" + "Solar Panel: " + solarCost);
}
else if (finalPrice >= 22000)
{
print("Basic Price: " + basicPrice + "\n" + "Electric model: " + electricCost);
}
else
{
print("Basic Price: " + basicPrice);
}
print("Total: " + finalPrice);
}
почему методы hybridNot и solarNot, кажется, повторяются, прежде чем перейти к следующему методу. Мне кажется, что у меня может быть проблема с тем, что я возвращаю в конце метода, но я, честно говоря, не могу понять, что случилось. Метод totalCost, похоже, игнорирует оператор if в методе discountNot, и логические значения не передаются правильно totalCost, и я получаю только значение finalPrice >= 26500
.
Опять же, я новичок в Java в целом, и я также новичок в stackoverflow (так привет!), Поэтому, пожалуйста, скажите мне, что я делаю что-то неправильно, и я буду правильно смотреть в следующий раз! Спасибо!!
Я недоумевал, что вы говорите, методы сделать что-нибудь, так как этот код не компилировать. Вы не можете написать оператор 'return' в методе с объявленным типом возвращаемого значения (например,' boolean'), не считая, что 'return' со значением, которое вы хотите вернуть. – RealSkeptic
@RealSkeptic: Чтобы быть справедливым, это как раз проблема. Однако, когда я пытаюсь фактически вернуть туда возвращаемое значение, программа становится все хуже и хуже.Либо он начинает цикл, либо компилятор жалуется, что я возвращаю неправильный тип. – Overclock
Это означает, что существует логическая проблема. И это имеет смысл, потому что у вас есть три возможности (электрический, гибридный, плохой ввод), но вы выбрали тип возврата, который дает только две возможности. Вам нужно изменить логику (возможно, поставить цикл проверки внутри метода?) Выбросить исключение?) – RealSkeptic