1

私はこのプログラムを動作させました

if (more == JOptionPane.NO_OPTION)       
{
    System.out.print("\nTotal profit/loss: $");      
    System.out.print(profitandloss);
}

セクションでは、プログラムの最後に、すべてのループを合計するのではなく、最後のループの結果のみを表示します。たとえば、各ループからの利益が8で、ループが4つある場合、合計は32になるはずですが、表示されるのは8つだけです。これを修正する方法について何かアイデアはありますか?

String productcode = null, purchased, cost, sold, salesprice, numberproducts = null;

double number = 1;
double profitandloss = 0;
int more;

System.out.println("Product code    units purchased  unit cost   units sold   units available   sales price  profit/loss");

double money;

for (int index = 1; index <= number; index++)
{
    productcode = JOptionPane.showInputDialog("Please enter the product code");
    int code = Integer.parseInt(productcode);

    purchased = JOptionPane.showInputDialog("Please enter the amount purchased");
    double unitspurchased = Double.parseDouble(purchased);

    cost = JOptionPane.showInputDialog("Please enter the cost of this item");
    double unitcost = Double.parseDouble(cost);

    sold = JOptionPane.showInputDialog("Please enter how many these items were sold");
    double unitssold = Double.parseDouble(sold);

    salesprice = JOptionPane.showInputDialog("Please enter the sales price for this item");
    double price = Double.parseDouble(salesprice);

    double available = unitspurchased - unitssold;
    profitandloss = unitssold*(price - unitcost);

    System.out.printf("P %2d %18.2f %18.2f %12.2f %12.2f %15.2f %15.2f", code, unitspurchased, unitcost, unitssold, available, price, profitandloss);
    System.out.println("");
    more= JOptionPane.showConfirmDialog(null, "Do you wish to enter any more products?", numberproducts, JOptionPane.YES_NO_OPTION);

    if (more == JOptionPane.YES_OPTION)
    {
        number++;
    }
    if (more == JOptionPane.NO_OPTION)
    {
        System.out.print("\nTotal profit/loss: $");
        System.out.print(profitandloss);
    }
}
4

2 に答える 2

2

変化する

profitandloss = unitssold*(price - unitcost);

profitandloss = profitandloss + unitssold *(price - unitcost);

または同等に

profitandloss += unitssold*(price - unitcost);

問題が発生している理由は、profitandloss毎回追加して最終的な回答を累積するのではなく、profitandloss毎回現在の結果で上書きするため、最終的には最新の結果のみを印刷することになります。

于 2012-10-21T18:16:05.687 に答える
2

交換する必要があります

profitandloss = unitssold*(price - unitcost);

profitandloss += unitssold*(price - unitcost);

profitandloss各反復でを上書きしています。

于 2012-10-21T18:17:33.567 に答える