我是一名新手程序员并且在理解数组时遇到了问题。我有两个String数组:
String[] itemList = {"item1", "item2", "item3",....."item10"}
String[] country = {"US", "UK", "France",....."Germany"}
正如您可能理解的那样,我的想法是,我应该能够从itemList
中选择一个项目,选择一个country
,该程序应该会显示该国家/地区的特定项目费用。
现在,我可以使用if statement
并说些什么:
ìf(itemList[i] == "item1" && country[i] == "US"){
//check the price for item1 in the US...}
。
如果我们的项目数量较少,这项工作正常,但如果项目数组太大,如数十万呢?如果我为每个项目选择if statement
,代码将会非常庞大。你们能提出更好的解决方案吗?
先感谢您!
答案 0 :(得分:2)
制作一个Item
对象(在单独的班级中...... Item.class
)
import java.util.Map;
import java.util.HashMap;
public class Item {
private final String name;
// <CountryName, Price>
private Map<String, Double> countryPrices;
public Item(String name) {
this.name = name;
this.countryPrices = new HashMap<>();
}
public String getName() {
return this.name;
}
public void setPrice(String countryName, double price) {
this.countryPrices.put(countryName, price);
}
public double getPrice(String countryName) {
return this.countryPrices.get(countryName);
}
}
如果这是一个严肃的应用程序,请使用BigDecimal
以获得更准确的价格。
此外,您可能需要创建一个Country
enum
,这样您就不必总是确保拼写正确并使用正确的大写/小写字母。< / p>
要使用此功能,请创建项目列表:
List<Item> items = new ArrayList<>();
然后添加新项目:
Item someItem = new Item();
someItem.setPrice("USA", 2.99);
然后,根据给定的国家/地区名称获取商品的价格:
// get from user input
String countryName =...
String itemName =...
// loop through the items list we created
for (Item item : items) {
if (item.getName().equalsIgnoreCase(itemName)) {
// we found the item we are looking for! get the price
double price = item.getPrice(countryName);
// do what you want with this...
System.out.println(itemName + "'s price in " + countryName + " is " + price + ".");
// We are done looking - we found the item and got it's price. End the loop
break;
}
}
旁注:作为@JacobG。说,don't compare strings with ==
答案 1 :(得分:0)
您可以(并且应该)使用循环迭代两个数组/数据集并自动计算价格。
例如:
for (int i = 0; i < itemList.length; i++){
String currentItem = itemList[i]; //Takes one item at a time
for (int j = 0; j < country.length; j++){
String currentCountry = country[j];
//Calculate price for both with example function
double price = calculatePrice(currentItem, currentCountry);
}
}
答案 2 :(得分:0)
我在这里遇到了你的问题。
我想提到的一些事情是
快乐的编码!
答案 3 :(得分:0)
假设问题得到了恰当的说明:
正如你可能理解的那样,我的想法是,我应该能够选择一个 itemList中的项目,选择一个国家,程序应该告诉我如何 很多特定项目在该国家的成本。现在,我可以使用if 声明并说些什么:
如果您从项目列表中选择一个项目,那么您应该已经在该列表中拥有它的索引(让我们称之为 item )。
同样适用于国家/地区(但请拨打索引国家/地区)。
现在你可能有一个稀疏的2-dim价格数组(称为价格),然后你可以说:
/* datatype of price is left out as a different discussion, might be long
for penny or cent or float for learning purpose or BigDecimal for bigger prieces.
*/
price = prices[country][item];
如果价格存储在地图中,也许您可以通过国家名称,项目名称以相同的方式查询。只要我们不知道,我们只能猜测。
price= prices.get ("US" + ":" + "Java-Compiler");
也许价格在数据库中,因此您需要查询。