private static String[][] menuList = {{"Soda","10"},{"Coke","20"},{"Water","5"}};
public Drinks(String menu, String size) {
setMenu(menu);
setSize(size);
}
public void setMenu(String menu) {
this.menu = menu;
for (int i = 0; i < menuList.length; i++) {
if (this.menu.equalsIgnoreCase(menuList[i][0])){
price = Double.valueOf(menuList[i][1]);
}else{price = 0.0;}
}
}
然后创建用于测试的对象
在menulist[][]中我不能获得前两行的价格,但我仍然可以获得最后一行
Drinks d = new Drinks("water","L");
Drinks e = new Drinks("coke","L");
Drinks f = new Drinks("soda","L");
System.out.println(d);
System.out.println(e);
System.out.println(f);
输出为
Drink[menu = water , size = L , price = 5.00]
Drink[menu = coke , size = L , price = 0.00]
Drink[menu = soda , size = L , price = 0.00]
我只想知道为什么?我该怎么解决这个问题?
您实际要做的是,对于menulist
中的每个条目,检查它的名称是否与参数对应,并每次设置(即覆盖)price字段。它的工作原理与不循环但只检查最后一项相同。
解决办法是跳出循环。我还更改了初始化变量的位置,以确保它已经初始化。
public void setMenu(String menu) {
this.menu = menu;
price = 0.0;
for (int i = 0; i < menuList.length; i++) {
if (this.menu.equalsIgnoreCase(menuList[i][0])){
price = Double.valueOf(menuList[i][1]);
break;
}
}
}
我有一个包含复杂条目的数组列表的结构,我想将它们转换为浮点数。虚部可以丢弃,这很好。 我想知道,为什么这不起作用,而另一方面,在创建列表“数组”之前将类型更改为float会起作用。 这是一个非常基本的问题,但如果有人能分享他或她的想法,我将非常高兴。 感谢提前:)
为什么比: memcmp是CPU指令还是什么?它一定很深,因为我在循环中使用获得了巨大的加速。
问题内容: 我正在尝试检查数组数组是否包含字符串数组。我的错误消息说: “无法为’contains’找到重载,该重载接受类型为’([([[((String)])]),[(String)])类型的参数列表 这是怎么回事!? 问题答案: 不符合协议,因此 不能在这里使用。您可以使用基于谓词的变体 代替: 因为是为元素数组定义的。
问题内容: 我开始于: 然后尝试: 最终: 从那以后我发现: 因此,我已经解决了最初的问题(有点),但是为什么数组不能互相匹配? 问题答案: Javascript数组是对象,您不能简单地使用相等运算符来了解那些对象的 内容 是否相同。如果两个物体实际上是完全一样的情况下(如平等运营商将只测试,作品和太)。 如果您需要检查两个数组是否相等,我建议只遍历两个数组并验证所有元素具有相同的值(并且两个数组
问题内容: 当实现像队列这样的FIFO时,我的教练总是建议我们将其表示为圆形数组,而不是常规数组。为什么? 是因为在后者中,我们最终将在数组中包含垃圾数据吗? 问题答案: 如果您使用固定数量的Array-Slots / Elements,则以循环方式回收插槽比较容易,因为您不需要重新排列Elements的顺序。每当第一个Element以类似Array的方式移除时,您都必须将剩余的Elements向
问题内容: 我要寻找一个量化的方式来索引的索引。 例如: 我想建立一个新的数组,以便该数组中的每一行(i)都是array的row(i),并由数组inds(i)的行索引。我想要的输出是: 我可以通过循环来实现: 但我正在寻找一种纯矢量化的解决方案。 问题答案: 使用索引数组对另一个数组进行索引时,每个索引数组的形状应与 输出 数组的形状匹配。您希望列索引匹配,并且您希望行索引匹配输出的行,例如: 由