当前位置: 首页 > 知识库问答 >
问题:

为什么2D数组循环检查不能访问某些值?

墨寂弦
2023-03-14
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]

我只想知道为什么?我该怎么解决这个问题?

共有1个答案

曾山
2023-03-14

您实际要做的是,对于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)的行索引。我想要的输出是: 我可以通过循环来实现: 但我正在寻找一种纯矢量化的解决方案。 问题答案: 使用索引数组对另一个数组进行索引时,每个索引数组的形状应与 输出 数组的形状匹配。您希望列索引匹配,并且您希望行索引匹配输出的行,例如: 由