0

したがって、私の Java クラスでは、トッピングを受け入れ、トッピングごとに合計金額に 75 セントを追加するプログラムを作成する必要があります。このエラーのため、まだ null テストを行っていません。基本的に私は持っています:

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

あなたが何をしようとしているのかわからない。文字列の 1 つの配列が別の文字列の配列にあるかどうかをテストしようとしている場合 (集合論の「サブセット」のように)。次に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 に答える
0

コードが壊れている理由は、 toppings.length < 3 と validToppings[0].length < 3 が必要な場合、おそらく x < 3 または x < toppings.length

for ループ内のすべては、カウンターに基づいている必要があります。

于 2012-04-23T04:45:06.070 に答える
0

ここでは、ネストされた for ループが適切なアプローチです。ループ自体 (または C スタイルを使用する場合は他の場所) でループ カウンターの型を宣言することを忘れないでください。そうしないと、1 日中コンパイラ エラーが発生します。

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、ループ全体で真である場合とそうでない場合があります。true になることはなく、ループが実行されないか、true になり、xまたはに関係なく、無限ループが発生する可能性がありますxx。などの場合がありますのでご注意ください。

于 2012-04-23T04:51:48.957 に答える
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 に答える