0

我必须编写一个使用 2 个数组的程序。第一个数组存储 5 个花名,第二个存储每朵花的价格。

用户输入花的种类和数量,程序输出成本。我无法用特定成本输出特定花的相关成本。

我想使用 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

我的第一个建议是flowers用花的名字初始化你的数组。

您可以为每一个手动执行此操作(例如flowers[0] = "Petunia";),或者您可以像在一个步骤中执行价格数组一样执行此操作(例如String[] flowers = {"Petunia", "Pansy","Rose","Violet","Carnation"};)。

然后你需要找到花数组的哪个索引包含用户输入的花名。循环遍历花数组的每个索引,直到一个匹配(确保使用index.equals(flowers[testIndex]),而不是==运算符)。

最后在输入的花名索引处将计数乘以价格,得到总成本。

于 2012-07-11T19:29:43.040 回答
0

您只是使用索引,而不是数组。

要访问花名,您必须像这样使用数组花:

flower[index]

并访问价格:

price[index]

'index' 是一个 int 而不是一个字符串。如果您必须找到给定花的索引(位置),则必须遍历所有数组直到找到它。

您可能想要使用地图而不是 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 回答
0

根据您将值放入价格数组的方式,您必须按该顺序放置鲜花。

遍历花的名称,当您找到与输入内容匹配的花的特定索引时(记住: .equals()而不是==),通过使用该索引返回该花的价格。

于 2012-07-11T19:26:37.910 回答
0

我会想到类似 a 的东西Map<String, Double> flowers = new HashMap<String, Double>();,然后可以很容易地检查它flowers.get(index)以获得它的价值。

也可能值得检查以确保他们输入了有效的花名。

HashMap 文档

教程中的地图页面

于 2012-07-11T19:27:41.950 回答
-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 回答