簡體   English   中英

停止方法運行兩次

[英]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()對其進行調用,然后將兩個字符串typeOfCarCostSolarPanelCost發送至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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM