如何在java中使两个数组相互关联?
我希望能够将这两个数组关联起来,以便在开始使用用户输入时可以访问名称和价格如何在java中使两个数组相互关联?,java,arrays,Java,Arrays,我希望能够将这两个数组关联起来,以便在开始使用用户输入时可以访问名称和价格 public class fastFood { public static void main (String[]args) { //array for prices and order double[] prices= new double[]{"5.79", "6.79", "4.59", "5.39", "6.59", "7.29", "6.09", "5.69"}; Stri
public class fastFood
{
public static void main (String[]args)
{
//array for prices and order
double[] prices= new double[]{"5.79", "6.79", "4.59", "5.39", "6.59", "7.29", "6.09", "5.69"};
String[] menu= new String[8];
menu[0]="Whopper Meal";
menu[1]="Double Whopper Meal";
menu[2]="Chipotle Whopper Meal";
menu[3]="Whopper Jr. Meal";
menu[4]="BK Double Stacker Meal";
menu[5]="Premium Chicken Sandwhich (Crispy or Grilled) Meal";
menu[6]="Chipotle Chicken Sandwhich (Crispy or Grilled) Meal";
menu[7]="OriginalChicken Sandwich Meal";
}
}
您可以使用
java.util.HashMap
(或其他一些java.util.Map
实现)
Map菜单=新建HashMap();
菜单。放入(“大餐”,5.79d);
//…等等。
您可以使用java.util.HashMap
(或其他一些java.util.Map
实现)
Map菜单=新建HashMap();
菜单。放入(“大餐”,5.79d);
//…等等。
代码中很少有错误:
float
和double
没有足够的精度来准确存储所有浮点数。例如,0.1不能准确存储在double
或float
中。就货币价值而言,你不能轻视这一事实。您应该改为使用任意精度有符号十进制数映射
项
来存储所有这些属性,如下所示:
class Item {
private String name;
private BigDecimal price;
// constructors, getters, setters
}
然后,维护项目列表:
List<Item> items = new ArrayList<Item>();
List items=new ArrayList();
float
和double
没有足够的精度来准确存储所有浮点数。例如,0.1不能准确存储在double
或float
中。就货币价值而言,你不能轻视这一事实。您应该改为使用任意精度有符号十进制数映射
项
来存储所有这些属性,如下所示:
class Item {
private String name;
private BigDecimal price;
// constructors, getters, setters
}
然后,维护项目列表:
List<Item> items = new ArrayList<Item>();
List items=new ArrayList();
double price = prices[2];
String menuItem = menu[2];
System.out.println(String.format("%s costs $%.2d",menuItem, price);
这应该是“Chipotle Whoper套餐价格4.59美元”
根据您这样做的目的,您确实应该考虑创建对象来表示这些菜单项。例如:
public class MenuItem
{
public double price;
public String name;
public MenuItem(String name, double price)
{
this.name = name;
this.price = price;
}
@Override
public String toString()
{
return String.format("name: %s cost: $%.2d",name,cost);
}
}
现在,在代码中,您可以执行以下操作:
List<MenuItem> menuItems = Arrays.asList(
new MenuItem("Big Mac",4.23);
new MenuItem("Quater Pounder",3.23);
new MenuItem("Chicken Sandwich",5.63);
);
for(MenuItem m : menuItems)
{
System.out.println(m.toString());
}
List menuItems=Arrays.asList(
新MenuItem(“巨无霸”,4.23);
新MenuItem(“四磅重”,3.23);
新菜单(“鸡肉三明治”,5.63);
);
for(MenuItem m:menuItems)
{
System.out.println(m.toString());
}
这将打印出菜单项中的每个项目。名称和价格会自动关联,因为它们作为属性包含在MenuItem对象的每个实例中。虽然我同意这是一种糟糕的实现方法,但您可以通过使用相同的索引访问它们来轻松关联它们。只要它们按正确的顺序输入,就可以工作
double price = prices[2];
String menuItem = menu[2];
System.out.println(String.format("%s costs $%.2d",menuItem, price);
这应该是“Chipotle Whoper套餐价格4.59美元”
根据您这样做的目的,您确实应该考虑创建对象来表示这些菜单项。例如:
public class MenuItem
{
public double price;
public String name;
public MenuItem(String name, double price)
{
this.name = name;
this.price = price;
}
@Override
public String toString()
{
return String.format("name: %s cost: $%.2d",name,cost);
}
}
现在,在代码中,您可以执行以下操作:
List<MenuItem> menuItems = Arrays.asList(
new MenuItem("Big Mac",4.23);
new MenuItem("Quater Pounder",3.23);
new MenuItem("Chicken Sandwich",5.63);
);
for(MenuItem m : menuItems)
{
System.out.println(m.toString());
}
List menuItems=Arrays.asList(
新MenuItem(“巨无霸”,4.23);
新MenuItem(“四磅重”,3.23);
新菜单(“鸡肉三明治”,5.63);
);
for(MenuItem m:menuItems)
{
System.out.println(m.toString());
}
这将打印出菜单项中的每个项目。名称和价格自动关联,因为它们作为属性包含在MenuItem对象的每个实例中。您的问题让我感到饥饿。:)使用地图你的问题让我觉得饿了。:)使用地图您是否提到由于汇率原因(美元->欧元f.e.)价格应存储为BigDecimal?还是有其他原因?@SteveBenett。不,那是另一个问题。double和float没有足够的精度精确地表示所有浮点数。对于货币价值,准确度是不能被玩弄的。@rohitjain你应该在你的答案中添加这一解释。你是否提到由于汇率原因(美元->欧元f.e.),价格应该存储为BigDecimal?还是有其他原因?@SteveBenett。不,那是另一个问题。double和float没有足够的精度精确地表示所有浮点数。对于货币价值来说,准确度是不可玩弄的。@rohitjain你应该在你的答案中加入这一解释。