2012-03-12 4 views
0

プロンプト: キャンディー名を受け入れるプログラム(例えば、 "チョコレートカバーブルーベリー")、ポンド当たりの価格、平均月に販売されたポンドの数量を表示し、ベストセラーアイテムである場合にのみそのアイテムのデータを表示します。ベストセラーアイテムは、1ヶ月あたり2000ポンド以上を販売するアイテムです。 b。センチネル値が入力されるまでキャンディデータを連続的に受け取り、高価なベストセラー商品のリストを表示するプログラム。ベストセラーアイテムは、演習2aで定義されています。高価なアイテムは、1ポンドあたり10ドル以上で販売されるアイテムです。ここで配列やforeachループを使用してデータのリストを反復処理し、一定の値だけを出力することはできません

は、運転中に良いデザインの一例です:

High-priced, Best-selling Candy 
Fudge $12.50 4500 lbs 
Vanilla Creme $13.75 2200 lbs. 
Fudge, 12.50, 4500 Jawbreakers, 6.50, 5500 Chocolate, 14.00, 790 Butterscotch, 9.50, 4500 Vanilla Creme, 13.75, 2200 
Item that sold most pounds: Jawbreakers 

が、私が午前の問題は、私の先生は私がループ、または配列のために使わせないということです。そして、ある変数に対して有限であるため、同じ変数の複数のインスタンスを定義する必要はありません。これを行う最も効率的な方法は何でしょうか?

start 

    // Declarations 
    num QUIT = "Y"; 
    final String HEADING = "High Priced, Best Selling Candy" + "\n" + "\n"; 
    final String HSPS = candyName + " " + candyPrice + " " + candySold + " "; 
    final String MOSTSOLD = "Item that sold the most pounds is " 

    while <> QUIT; 
    enterCandy(); 
    printHighPriceBestSelling(); 
    printSoldMostPounds(); 
    endwhile; 

    stop 

entercandy() 
    String candyName = "poop"; 
    double candyPrice = 0.0; 
    double candyWeight = 0.0; 
    int candySold = 0; 
    output "Please enter name of candy."; 
    input candyName; 
    output "Please enter candy price."; 
    input candyPrice; 
    output "Please enter pounds sold."; 
    input candySold; 

printHighPriceBestSelling() 
    if(candySold > 2000 && candyPrice > 10) 
    { 
    output HEADING; 
    output HSPS; 
    } 
    else 
    { 
    output "There were/are no best selling, high priced candy!" 
    } 

    printSoldMostPounds(); 

//There is no basis for comparison. 

これを実行する方法は2通りあります。上書きされるまでループでいっぱいになるように、さまざまな、任意の、事前定義された変数を作成します。 10とするか、配列を作成します。入れ子になったif/switch/whileループを使ってそれをやる複雑すぎる方法があると確信していますが、なぜ私たちに教えるか/醜い非効率的な方法を使用するように強制しますか?

output "MOSTSOLD "; 

答えて

0

私は、配列のほかに、先生はあなたに標準のCollectionオブジェクトを使用できないと仮定しています。

あなたは、入力したキャンディオーダーの独自のLinkedListを作成することができます。醜いですが、うまくいくでしょう。チェーンのシングル「リンク」は、この

public class CandyOrderLink { 
private String candyName; 
private Double candyPrice; 
private Double orderAmount; 
private CandyOrderLink nextOrderLink; 

public CandyOrderLink(String candyName, Double candyPrice, Double orderAmount) { 
    this.candyName = candyName; 
    this.candyPrice = candyPrice; 
    this.orderAmount = orderAmount; 
} 

public CandyOrderLink getNextLink() { 
    return nextOrder; 
} 

public void setNextLink(CandyOrderLink nextOrderLink) { 
    this.nextOrderLink= nextOrderLink; 
} 

public String getCandyName() { 
    return candyName; 
} 
public Double getCandyPrice() { 
    return candyPrice; 
} 
public Double getOrderAmount() { 
    return orderAmount; 
} 
} 

ない私はかなり割り当てのポイントを把握しますが、すべての注文を追跡するために、リストデータ構造を使用している場合は動作するかのようになります。各エントリ(candyName、price、amount)のリンクを作成し、そのリンクを前のリンクの次のリンクに設定するだけです。入力の最後に、各リンクでgetNextLink()を繰り返し呼び出し、必要に応じて情報を印刷して、リストを繰り返し処理します。 http://en.wikipedia.org/wiki/Linked_list

+0

ありがとう兄弟!前にこれらのことを聞いたことがない!私は彼らに良い見通しを与えるだろう! – user1251814

+1

問題ありません。参考のように、誰かがあなたの質問にStackOverflowで答えるか(または有意義なガイダンスを提供する)、その習慣を「受け入れる」ことは慣習的であり、慎重である。そのような「受容」は、そのメンバの評判メトリックに追加されます。 – skiller3

0

問題のの説明から、入力したデータを並べ替えることができるように保存する必要はありません。 abはキャンディを表示する簡単な条件を示しています:2,000ポンド以上、少なくとも10ドル/ポンド。各エントリは、入力後すぐに印刷できます。

しかし、あなたの出力例では、ベストセラーキャンディーを選択する必要があります。これは説明と矛盾します。どちらが正しい?

関連する問題