0

因此,对于我的 java 类,我必须编写一个程序来接受浇头,并为每个浇头在总价上增加 75 美分。由于这个错误,我还没有为空测试而烦恼。基本上我将拥有:

list1 = Valid Toppings
list2 = User Toppings

用户浇头可以按任何顺序输入,因此将它们作为并行数组进行匹配没有任何意义。您可以在下面的代码片段中看到我使用的逻辑,但这是不合法的。当我尝试编译时,我的终端到处呕吐。我将如何实现下面的逻辑,或者完全实现我的逻辑的更好方法?

  for(x = 0; toppings.length < 3; x++)
    {
      if(toppings[x].equals(for(xx = 0; validToppings[0].length < 3; xx++) {validToppings[xx]})
        {setSize(size); price += .75;}
        else
        {System.out.println("Error in Pizza class: Attempt to set invalid pizza topping" + x + "(" + toppings[x] + ")")};
    }
4

5 回答 5

1

这里的问题是你试图使用一个 if 语句,它做一个布尔比较,一个 for 语句,它不能变成一个布尔值。

改为这样做:

for(int x = 0; topping.length < 3; x++){
         for(int xx = 0; vaildToppings[0].length < 3; xx++){
             if(toppings[x].equals(validToppings[xx]){
//do stuff
     }
}

嵌套 for 循环是您的朋友。

topping.length < 3 因为您关闭的条件也是无意义的。考虑重新检查你的逻辑,我不知道你实际上想做什么,所以我不会做任何假设。

于 2012-04-23T04:47:56.833 回答
0

你的代码被破坏的原因是你有 toppings.length < 3 和 validToppings[0].length < 3 当你想要的时候,大概是 x < 3 或 x < toppings.length

for 循环中的所有内容都应基于您的计数器。

于 2012-04-23T04:45:06.070 回答
0

试试这个:

for (int x = 0; x < toppings.length; x++)
{
    if (!validToppings.contains(toppings[x]))
    {
        //throw some error, or print a message, etc....
    }
    else
    {
        //do stuff
    }
}
于 2012-04-23T04:49:42.000 回答
0

嵌套的 for 循环是正确的方法。不要忘记在循环本身(或其他地方,如果您想使用 C 风格)中声明循环计数器的类型,否则您将整天收到编译器错误。

for(int x = 0; x < toppings.length; x++) {
    for(int xx = 0; xx < validToppings[0].length; xx++) {
        if(toppings[x].equals(validToppings[xx]) {
            // Perform operations here.
    }
}

作为旁注: toppings.length < 3在整个循环中可能是也可能不是真的;它永远不会是真的,从而导致循环不执行,或者它可能是真的,导致无限循环,不管xor xx。小心这种情况。

于 2012-04-23T04:51:48.957 回答
0

我不确定你想做什么。如果您尝试测试一个字符串数组是否在另一个字符串数组中(如集合论中的“子集”)。那为什么不使用ArrayList类似这样的东西:(对不起,如果我的语法有点不对劲,我已经有一段时间没有做 java 了)

ArrayList<String> toppings = new ArrayList<>();
toppings.add("Pepperoni");
toppings.add("Olives");

ArrayList<String> validToppings = new ArrayList<>();
validToppings.add("Pepperoni");
validToppings.add("Salami");
validToppings.add("Olives");
validToppings.add("Cheese");

boolean toppingsValid = validToppings.containsAll(toppings);
于 2012-04-23T04:57:19.787 回答