0

インポートjavax.swing.JOptionPane;

パブリッククラスBeerStoreBP{

プライベート文字列名。

プライベートダブルcustAge;

private double numBeers = 0;

プライベートダブルbeerDisc=0;

プライベートダブルビールタイプ=0;

プライベートダブルtheBeerBrand;

プライベートダブル合計=0;

プライベートダブルビール=0;

public void setAge(double theAge)
{
    custAge = theAge;
}

public void setName(String theName)
{
    name = theName;
}

public void setNumBeers(double theNumBeers)
{
    numBeers = theNumBeers;
}

public void setBeerType(double theBeerType)
{
    beerType = theBeerType;
}

public double getAge()
{
    return custAge;
}

public String getName()
{
    return name;
}

public double getNumBeers()
{
    return numBeers;
}

public double calcNumBeersValid()
{

    String numBeersStr;

    while (numBeers < 3 || numBeers > 6)
    {
        numBeersStr = JOptionPane.showInputDialog("You must pick 3-6 " +
                                                                "beers");
        numBeers = Double.parseDouble(numBeersStr);
    }

    return numBeers;
}

public double calcBeerPrice()
{

    final double LAGIMRED = 1.90;  
    final double DESINIPA = 2.00;
    final double BELBEBRN = 1.80;
    final double SCHOATST = 2.50;
    final double BOULFHSAISN = 2.75;
    final double GANDANCPRTR = 1.75;


       if (theBeerBrand == 1)
           beer = LAGIMRED;

       else if (theBeerBrand == 2)
           beer = DESINIPA;

       else if (theBeerBrand == 3)
           beer = BELBEBRN;

       else if (theBeerBrand == 4)
           beer = SCHOATST;

       else if (theBeerBrand == 5)
           beer = BOULFHSAISN;

       else 
           beer = GANDANCPRTR;        

       return beer;


public double calcBeerTotal()
{
    String beerTypeStr;
    double count = 1;

    while (count <= numBeers)
    {    

    beerTypeStr = JOptionPane.showInputDialog("Please choose between " 
                + "these fine selections:\n1 - Lagunitas Imperial Red - " +
                       "$1.90\n2 - Deschutes Inversion IPA - $2.00\n3 - " +
                 "Bell's Best Brown Ale - $1.80\n4 - Schlafly's Oatmeal " +
                 "Stout - $2.50\n5 - Boulevard's Farmhouse Saison - $2.75" 
                + "\n6 - Gandy Dancer Porter - $1.75");
        beerType = Double.parseDouble(beerTypeStr);
        beerType = theBeerBrand;
        total += beer;
        count++;
    }    

    return total;

}

public double getBeerTotal()
{
    double theTotal;
    theTotal = total; 

    return theTotal;
}

public double calcBeerDisc()
{

    if (numBeers == 6)
        beerDisc = .10;

    else if (numBeers >= 4)
        beerDisc = .05;

    else 
        beerDisc = .00; 

    return beerDisc;
}

public double calcFinalPrice()
{

   double finalPrice;

    finalPrice = total-(total * beerDisc);

    return finalPrice;

}

ここにヌーブ、だから慈悲を流してください。上記のプログラムのポイントは、ビールの量を収集し(3〜6である必要があります)、顧客に各ビールの選択肢を提供し、ビールの合計量を計算し、割引を適用することです(ビールの数によって異なります)。非常に単純なものですが、私はレンガの壁にぶつかりました。

私の問題は、最終価格の計算にあります。calcBeerTotalメソッドからの何もcalcFinalPriceメソッドに渡されない理由を理解できないようです。私の出力には、最終価格ではなく、ビールの量が表示されます。

だから私の主な質問は:私は私のcalcメソッドのためにある種のセッターとゲッターメソッドが必要ですか?いくつかのsetterメソッドとgetterメソッドを試しましたが、最終的な価格がまだ得られていません(calcBeerDiscの上にあるメソッド)。私はプログラミングの知識が限られているので、私が書いたものよりも複雑にならないようにしてください。セッターやゲッター以外の場合は、配列などもよくわかりませんので、遠ざけてください。どんな助けでも大歓迎です!

4

1 に答える 1

0

書き直し:

import javax.swing.JOptionPane;

public class BeerStoreBP {

private String name;

private double custAge;

private double numBeers = 0;

private double beerDisc = 0;

private double total = 0;

// This only exists in one method.  There is no need for it to be global
//private double beerType = 0;

// This only exists in one method.  There is no need for it to be global    
//private double theBeerBrand;

// This only exists in one method.  There is no need for it to be global    
//private double total = 0;

// This only exists in one method.  There is no need for it to be global
//private double beer = 0;

public void setAge(double theAge)
{
    custAge = theAge;
}

public void setName(String theName)
{
    name = theName;
}

public void setNumBeers(double theNumBeers)
{
    numBeers = theNumBeers;
}

// Your functionality is parsed by your dialog.  There is no need for this.
//public void setBeerType(double theBeerType)
//{
//    beerType = theBeerType;
//}

public double getAge()
{
    return custAge;
}

public String getName()
{
    return name;
}

public double getNumBeers()
{
    return numBeers;
}

public double calcNumBeersValid()
{

    String numBeersStr;

    while (numBeers < 3 || numBeers > 6)
    {
        numBeersStr = JOptionPane.showInputDialog("You must pick 3-6 " +
                                                                "beers");
        numBeers = Double.parseDouble(numBeersStr);
    }

    return numBeers;
}

public double calcBeerPrice(int beerBrand)
{

    final double LAGIMRED = 1.90;  
    final double DESINIPA = 2.00;
    final double BELBEBRN = 1.80;
    final double SCHOATST = 2.50;
    final double BOULFHSAISN = 2.75;
    final double GANDANCPRTR = 1.75;


    double beerPrice;

       if (beerBrand == 1)
           beerPrice = LAGIMRED;

       else if (beerBrand == 2)
           beerPrice = DESINIPA;

       else if (beerBrand == 3)
           beerPrice = BELBEBRN;

       else if (beerBrand == 4)
           beerPrice = SCHOATST;

       else if (beerBrand == 5)
           beerPrice = BOULFHSAISN;

       else 
           beerPrice = GANDANCPRTR;        

       return beerPrice;

}

public void calcBeerTotal()
{
    String beerTypeStr;
    double count = 1;
    double beerPrice;
    // No need to be double
    int beerBrand;

    while (count <= numBeers)
    {    

        beerTypeStr = JOptionPane.showInputDialog("Please choose between " 
                + "these fine selections:\n1 - Lagunitas Imperial Red - " +
                       "$1.90\n2 - Deschutes Inversion IPA - $2.00\n3 - " +
                 "Bell's Best Brown Ale - $1.80\n4 - Schlafly's Oatmeal " +
                 "Stout - $2.50\n5 - Boulevard's Farmhouse Saison - $2.75" 
                + "\n6 - Gandy Dancer Porter - $1.75");
        beerBrand = Integer.parseInt(beerTypeStr);
        beerPrice = calcBeerPrice(beerBrand);
        total += beerPrice;
        count++; 

    }

}

public double getBeerTotal()
{
    return total;
}

public double calcBeerDisc()
{

    if (numBeers == 6)
        beerDisc = .10;

    else if (numBeers >= 4)
        beerDisc = .05;

    else 
        beerDisc = .00; 

    return beerDisc;
}

public double calcFinalPrice()
{

   double finalPrice;

    finalPrice = total-(total * beerDisc);

    return finalPrice;

}


}

これは動作状態ですが、UI部分をこのクラスから削除して、他の場所に含めることをお勧めします。

于 2012-12-06T03:58:22.807 に答える