0

2つの配列を使用するプログラムを作成する必要があります。最初の配列には5つの花の名前が格納され、2番目の配列には各花の価格が格納されます。

ユーザーは花の種類と数を入力し、プログラムはコストを出力します。特定の花の関連コストを特定のコストで出力するのに問題があります。

5 ifステートメントを使用したいのですが、花の文字列に問題があります。助言がありますか?

これまでの私のコードは次のとおりです。

import java.util.Scanner;

public class FlowerCounter
{
    public static void main(String[] args)
    {

        String[] flowers = new String[5];
        double[] price = {.50, .75, 1.50, .50, .80};

        Scanner keyboard = new Scanner(System.in);
        System.out.println("What kind of flower would you " +
            "like to purchase? \nPetunia, Pansy, Rose," +
            " Violet, or Carnation?");

        String index = keyboard.nextLine();
        System.out.println("How many " + index +"s" + " would you like?");
        int count = keyboard.nextInt();

        double total = count * price.length;
        System.out.println("The cost for " + count  +  index  + " is " + total);             
    }        
}
4

5 に答える 5

0

のようなものを考えてMap<String, Double> flowers = new HashMap<String, Double>();、その値を取得するために非常に簡単に確認できflowers.get(index)ます。

また、有効な花の名前が入力されていることを確認する価値があるかもしれません。

HashMapのドキュメント

チュートリアルのマップページ

于 2012-07-11T19:27:41.950 に答える
0

価格配列に値を入れる方法に基づいて、花をその順序で配置する必要があります。

花の名前を繰り返し、入力されたものと一致する花の特定のインデックスを見つけたら(覚えておいてください: .equals()ではなく==)、そのインデックスを使用してその花の価格を返します。

于 2012-07-11T19:26:37.910 に答える
0

私の最初の提案はflowers、花の名前で配列を初期化することです。

これは、それぞれに対して手動で行うことも(eg flowers[0] = "Petunia";)、または1つのステップで価格配列を行ったように行うこともできます(eg String[] flowers = {"Petunia", "Pansy","Rose","Violet","Carnation"};)。

次に、flowers配列のどのインデックスに、ユーザーが入力した花の名前が含まれているかを確認する必要があります。花の配列の各インデックスを、1つが一致するまで循環します(演算子index.equals(flowers[testIndex])ではなく、必ずを使用してください)。==

最後に、入力した花の名前のインデックスでカウントに価格を掛けて、合計コストを求めます。

于 2012-07-11T19:29:43.040 に答える
0

インデックスを使用しているだけで、配列は使用していません。

花の名前にアクセスするには、次のように配列flowerを使用する必要があります。

flower[index]

そして価格にアクセスするには:

price[index]

'index'はintであり、Stringではありません。特定の花のインデックス(位置)を見つける必要がある場合は、それが見つかるまですべての配列を繰り返す必要があります。

2つの配列の代わりにマップを使用することをお勧めします:http: //docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

マップを使用すると、花の名前をキーとして花の価格にアクセスできます。宣言するだけMap<String, Double> prices = new HashMap<String, Double>();

于 2012-07-11T19:30:19.243 に答える
-3
import java.util.Scanner;


public class FlowerCounter {
public static void main(String[] args)
{
   String[] flowers = {"Petunia", "Pansy", "Rose", "Violet", "Carnation"};
   double[] price = {.50, .75, 1.50, .50, .80};
   double cost = 0;

   Scanner keyboard = new Scanner(System.in);
   System.out.println("What kind of flower would you " +
                          "like to purchase? \nPetunia, Pansy, Rose," +
                          " Violet, or Carnation?");

   String index = keyboard.nextLine();

   System.out.println("How many " + index +"s" + " would you like?");
   int count = keyboard.nextInt();

  if (index.equals("Petunia") || index.equals("petunia"))
       cost = (double)price[0] * count;
   else if (index.equals("Pansy") || index.equals("pansy"))
       cost = (double)price[1] * count;
   else if (index.equals("Rose") || index.equals("rose"))
       cost = (double)price[2] * count;
   else if (index.equals("Violet") || index.equals("violet"))
       cost = (double)price[3] * count;
   else if (index.equals("Carnation") || index.equals("carnation"))
       cost = (double)price[4] * count;
   else 
       System.out.println("wrong flower");

   System.out.println("The cost for " + count+ " "  +  index  + " is " + cost);            
}

}
于 2012-07-11T19:39:25.663 に答える