0

購入したボトルの数に基づいて顧客が支払う価格を計算することはできません。購入したボトルの量に関係なく、14ドルの値を返し続けます。以下のJavaコードを参照してください。

// PriceCalculator class that calculates the prices for customers
// counter controlled repetition

import java.util.Scanner; // program uses class Scanner

public class PriceCalculator
{
private String beginSale; // name of shop this price is calculated

// constructor initializes beginSale
public PriceCalculator( String name )
{
    beginSale = name; // initializes shopName
} // end constructor

// method to set the shop name
public void setBeginSale (String name )
{
    beginSale = name; // set the welcome address
} // end method setBeginSale

// method to retrieve the welcome address
public String getBeginSale()
{
    return beginSale;
} // end method getBeginSale

// display a welcome message to the shopper
public void displayMessage ()
{
    // getBeginSale gets the thank you address
    System.out.printf( "Welcome to Price Calculator for Purchasing Wines at %s!\n",
        getBeginSale() );
} // end method displayMessage

// determine charges based on 5 customers who shopped
public void calculatePrice()
{
    // create scanner to obtain input from command window
    Scanner input = new Scanner( System.in );

    int basePrice; // base price of a bottle of wine
    String customer; // name of customer
    int gradeCounter; // number of customers to be entered next
    int bottles; // number of bottles purchased
    double discount; // discount value on the number of bottles
    double rate;
    double total; // total costs of wine purchased

    // initialization phase
    basePrice =  10; // initialize base price
    gradeCounter = 1; // initialize loop counter
    bottles = 1; // initialize bottles
    discount = (basePrice * bottles); // initialize discount
    rate = 0;
    customer = null; // initialize customer name

    // processing phase uses counter-controlled repetition
    while ( gradeCounter <= 3 ) // loop 5 times
    {
        System.out.print( "Enter the name for customer " + gradeCounter + " : " ); // prompt
        customer = input.next(); // input next name
        System.out.print( "Enter the number of bottles for customer " + gradeCounter + " : "); // prompt
        bottles = input.nextInt(); // input next bottles sold
        gradeCounter = gradeCounter + 1; // increment counter by 1
        discount = (basePrice * bottles) - (rate * bottles);

        System.out.printf( "\nThe Price for Customer - %s is : $%.2f\n\n",
            customer, discount );
    } // end while loop

    // calculate purchase based on number of bottles sold

    if ( bottles <= 6 )
    {
        discount = (basePrice * bottles) - (rate * bottles); // calculates discount
    }
    else if 
    ( bottles > 6 && bottles<= 12 )
        {
        discount = (basePrice * bottles) - (rate * bottles); // calculates discount
        }
    else if ( bottles > 48 )
        System.out.println ( "It is forbidden to sell above the maximum range");

} // end method calculatePrice
} // end class PriceCalculator
4

4 に答える 4

2

変更|| に &&

if (bottles > 6 || bottles <= 12) // Your code

if (bottles > 6 && bottles <= 12) // changes
于 2012-11-26T07:05:44.807 に答える
1

あなたはあなたを変えたい

if (bottles > 6 || bottles <= 12)

if (bottles > 6 && bottles <= 12)
于 2012-11-26T04:17:15.143 に答える
1

値を変更していません...最初に、割引の値を設定します。

discount = (basePrice * bottles); // initialize discount

次に、whileループでは、指定された値に基づいて更新されることはありません。

System.out.printf( "\nThe Price for Customer - %s is : $%.2f\n",
        customer, discount );

割引値は、printfの前のwhileループ内に設定する必要がありますか?:)

または、より明確にするために:

    // processing phase uses counter-controlled repetition
while ( gradeCounter <= 3 ) // loop 3 times
{
    System.out.print( "Enter the name for customer 1: " ); // prompt
    customer = input.next(); // input next name
    System.out.print( "Enter the number of bottles for customer 1: "); // prompt
    bottles = input.nextInt(); // input next bottles sold
    gradeCounter = gradeCounter + 1; // increment counter by 1
discount = (basePrice * bottles);
    System.out.printf( "\nThe Price for Customer - %s is : $%.2f\n",
        customer, discount );
} // end while loop
于 2012-11-26T04:20:23.917 に答える
1

簡単だ; データを入力するループで価格を印刷しているので、価格は変更されず、同じステートメントが何度も印刷されます。

次のステートメントを移動するだけです。

System.out.printf( "\nThe Price for Customer - %s is : $%.2f\n", customer, discount );
} // end while loop

この行を投稿してください:

System.out.println( "It is forbidden to sell above the maximum range" );

出力は次のようになります。

Welcome to Price Calculator for Purchasing Wines at Red Rocky!
Enter the name for customer 1: asdfsa
Enter the number of bottles for customer 1: 3

The Price for Customer - asdfsa is : $42.00
Enter the name for customer 1: gasdfs
Enter the number of bottles for customer 1: 4

The Price for Customer - gasdfs is : $56.00
Enter the name for customer 1: asfasdf
Enter the number of bottles for customer 1: 5

The Price for Customer - asfasdf is : $70.00

また、このステートメントを置き換えることができます

System.out.print( "Enter the name for customer 1: " );

System.out.print( "Enter the name for customer " + gradeCounter + ":");

最終的なコードは次のようになります。

while (gradeCounter <= 3) // loop 3 times
{
    System.out.print("Enter the name for customer 1: "); // prompt
    customer = input.next(); // input next name
    System.out.print("Enter the number of bottles for customer 1: "); // prompt
    bottles = input.nextInt(); // input next bottles sold
    gradeCounter = gradeCounter + 1; // increment counter by 1
// calculate purchase based on number of bottles sold
    if (bottles <= 6) {
        discount = (basePrice * bottles); // calculates discount
    } else if (bottles > 6 || bottles <= 12) {
        discount = discount * 0.05 * bottles * basePrice; // calculates discount
    } else if (bottles > 48)
    System.out.println("It is forbidden to sell above the maximum range");
    System.out.printf("\nThe Price for Customer - %s is : $%.2f\n",customer, discount);
} // end while loop
于 2012-11-26T04:22:32.587 に答える