-1

我认为这个系统可能需要一个阵列,因为这将取决于用户他或她将接受多少订单。

我目前正在为我们的班级创建一个作业,我们还没有讨论数组,我最近在 Google 上读到了它。

系统将使用 F1 代表食物 1 或 D1 代表饮料 1 等代码询问客户他或她喜欢什么订单

所以我在想像..

    int x = 1;
    String[] foodchoice;
    foodchoice = new String[x];

然后系统将接受第一个值并将其分配给foodchoice[1]系统现在将询问客户是否要再次订购,如果是,我将简单地输入x++以便将下一个信息添加到foodchoice[2]..

我真的不确定如何使用数组,当我尝试检查每个foodchoice喜欢的信息时..

    if(foodchoice[1]=="f1")
    {
      System.out.print("You ordered food1");
    }

系统崩溃并Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1在那一if行..

请帮助:c

4

4 回答 4

3

像许多其他语言一样,java 中的数组是 0 索引的。因此,对于一个大小为 1 的数组,就像您的情况一样,您可以拥有的最大索引是 0 ,foodchoices[1]实际上是OutOfBounds

于 2013-09-27T08:34:04.957 回答
1
int x = 1;
String[] foodchoice;
foodchoice = new String[x];

在这里,您已将数组的维度固定为一个元素。

数组总是开始,index=0所以这将起作用foodchoice[0]

当您执行foodchoice[1]or 2 及更高版本时,这是不可能的,因为 RAM 中没有此元素的位置,也没有为其分配内存。

我建议您使用集合,例如arraylistor hashmap,它会自动递增并且是动态的,不像您需要始终提供固定维度的数组。

像这样使用数组列表:

ArrayList<String> foodchoice  = new ArrayList<String>();
foodChoice.add(firstValue);
foodChoice.add(secondValue);
foodChoice.get(0);//get the first value
于 2013-09-27T08:35:09.907 回答
0

这是因为数组索引从 0 开始。因此new String[1]创建一个长度为 1 的数组。有效索引为 0 <= index < 1 -> 只有 0 有效。

此外,数组在这里是一个非常糟糕的选择,因为数组不容易增长。请改用集合类型。

于 2013-09-27T08:35:03.747 回答
0
String[] array = new String[x]

定义数组,索引从 0 到 x-1

您需要使用index 0ie 添加元素,以 . 开头x = 1并为其赋值foodchoice[x-1]。递增后也赋值给foodchoice[x-1].

这绝对不会崩溃。

于 2013-09-27T08:54:14.360 回答