[英]Stop method from running twice
在方法askCarType()
和askSolarPanel()
,inputdialog都運行兩次,一次是在其自己的方法中,一次是在最終方法PrintOptions()
。
我只需PrintOptions()
它們運行一次,那就是在最終方法PrintOptions()
。
我怎樣才能做到這一點?
import javax.swing.*;
public class short7 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PrintOptions();
}// ends main
public static String askCarType() {
String typeOfCar;
typeOfCar = JOptionPane.showInputDialog("Electric or Hybrid?");
if (!typeOfCar.equals("Electric")
&& (!typeOfCar.equals("electric") && (!typeOfCar
.equals("Hybrid") && (!typeOfCar.equals("hybrid"))))) {
JOptionPane
.showMessageDialog(null,
"You have to choose either an Electric or Hybrid type of car.");
typeOfCar = JOptionPane.showInputDialog("Electric or Hybrid?");
}
return typeOfCar;
}// ends askCarType
public static String askSolarPanel() {
String wantSolarPanel;
wantSolarPanel = JOptionPane
.showInputDialog("Do you want a Solar Panel?");
if (!wantSolarPanel.equals("Yes")
&& (!wantSolarPanel.equals("yes") && (!wantSolarPanel
.equals("No") && (!wantSolarPanel.equals("no"))))) {
JOptionPane.showMessageDialog(null,
"You have to enter either Yes or No");
wantSolarPanel = JOptionPane
.showInputDialog("Do you want a Solar Panel?");
}
return wantSolarPanel;
}// ends askSolarPanel
public static int calculateDiscount() {
String typeOfCarSelected = askCarType();
String SolarPanelSelected = askSolarPanel();
int Discount = 0;
if ((typeOfCarSelected.equals("Electric") || typeOfCarSelected
.equals("electric"))
&& ((SolarPanelSelected.equals("Yes") || SolarPanelSelected
.equals("yes")))) {
Discount = 500;
} else {
Discount = 0;
}
return Discount;
}// ends calculateDiscount
public static int CalculateCost() {
String typeOfCarCost = askCarType();
String SolarPanelCost = askSolarPanel();
final int basicPrice = 20000;
final int ElectricModel = 2000;
final int SolarPanel = 5000;
final int Discount = calculateDiscount();
int total = 0;
if ((typeOfCarCost.equals("Electric") || typeOfCarCost
.equals("electric"))
&& ((SolarPanelCost.equals("No") || SolarPanelCost.equals("no")))) {
total = basicPrice + ElectricModel;
System.out.println("Basic Price:" + basicPrice);
System.out.println("Electric Model:" + ElectricModel);
System.out.println("Total:" + total);
} else if ((typeOfCarCost.equals("Electric") || typeOfCarCost
.equals("electric"))
&& ((SolarPanelCost.equals("Yes") || SolarPanelCost
.equals("yes")))) {
total = basicPrice + ElectricModel + SolarPanel - Discount;
System.out.println("Basic Price:" + basicPrice);
System.out.println("Electric Model:" + ElectricModel);
System.out.println("Solar Panel:" + SolarPanel);
System.out.println("Discount:" + Discount);
System.out.println("Total:" + total);
} else {
total += basicPrice;
System.out.println("Basic Price:" + basicPrice);
System.out.println("Total:" + total);
}
return total;
}// ends CalculateCost
public static void PrintOptions() {
CalculateCost();
}// ends PrintOptions
}// ends class short7
您要兩次調用askCarType()
和askSolarPanel()
,而您需要一次調用它們,因此在CalculateCost()
對其進行調用,然后將兩個字符串typeOfCarCost
和SolarPanelCost
發送至calculateDiscount
方法,如下所示:
public static int calculateDiscount(String typeOfCarSelected, String SolarPanelSelected) {
int Discount = 0;
if ((typeOfCarSelected.equals("Electric") || typeOfCarSelected.equals("electric")) && ((SolarPanelSelected.equals("Yes") || SolarPanelSelected.equals("yes")))) {
Discount = 500;
} else {
Discount = 0;
}
return Discount;
}//ends calculateDiscount
並在CalculateCost()
public static int CalculateCost() {
String typeOfCarCost = askCarType();
String SolarPanelCost = askSolarPanel();
final int basicPrice = 20000;
final int ElectricModel = 2000;
final int SolarPanel = 5000;
final int Discount = calculateDiscount(typeOfCarCost, SolarPanelCost);/////here you send the input fromthe user to this method without needing to call it again
int total = 0;
....
}
您可以聲明兩個類變量。
字符串typeOfCar;
字符串wantSolarPanel;
並在askCarType()方法中分配
typeOfCar = ................
並在askSolarPanel()方法中分配
wantSolarPanel = .....................
然后,使用CalculateCost()和calculateDiscount()中的這些變量,而不是再次調用askCarType()和askSolarPanel()方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.