実現したいコード(※書きたいコードではない)
java
1 public void answer(int num1,int num2,int num3) { 2 //3つならまだしも100とかだと大変 3 if (num1 == 1 || num2 == 1 || num3 == 1) { 4 5 ANSWER = true; 6 } 7 //すべて&&でつなげることが重要 8 if (num1 == 0 && num2 == 0 && num3 == 0) { 9 ANSWER = false; 10 } 11 12 13 }
可変引数を使ったやり方(試したこと)
java
1 2 3private boolean ANSWER; 4 public void answer( int... nums) { 5 6 for (int i = 0; i < nums.length; i++) { 7 for (int j = 0; j < nums.length; j++) { 8 /* 9 * 問題の部分での重複を防ぐ 10 * num[0]==0&&num[0]==0等では機能しないため 11 * 12 * */ 13 if (i == j && j != nums.length - 1) { 14 continue; 15 } 16 if (i == j && j == nums.length - 1) { 17 break; 18 } 19 /*--------------------------------*/ 20 21 while (nums[i] == 1) { 22 23 ANSWER= true; 24 break; 25 } 26 27 /* 28 * 問題の部分 29 * この書き方だと最後尾しか判定されない 30 * ここで「可変引数内すべてが0である場合は」としたい*/ 31 while (nums[i] == 0 && nums[j] == 0) { 32 33 ANSWER = false; 34 35 break; 36 } 37 38 39 } 40 } 41 42 }
といった感じです
for分は繰り返しとはいえ、判定するのは一往復一数字のみですよね?
そこで、その判定中の一点の数字以外全ても引き合いに出したいのですが何かいい方法はありますか?
追記
説明が下手くそで、すみません。。。
目的はみなさんの言う通り
1が一つでも含まれていたらANSWERをtrue、
全てが0ならANSWERをfalse
です。
上記のコードはそのクラスでは動かしませんインスタンス生成で違うクラス使います
このクラスでしてほしいことはANSWERがtrueかfalseかのみです。
そして、使われた場合numsに入れ込むのもまた違うクラスからとってきたゲッターです。
そのゲッターは変数なので排他的関係にはなりません。
(ちなみに、それぞれ違うタイミングでに0~2に変動)
java
1//上記クラスをAクラスとし 2//使うクラスをC、ゲッターはBとするなら 3 4 5A.answer(B.num,B2.num,B3.num); 6 7
ちなみにお時間とらして恐縮なのですが、
私のアホみたいなコードだとなぜ最後尾しか判定されないのでしょうか?
私のイメージだとiもjもずっとグルグル回ってるイメージなのですが、、、
すみません答えだけでなく、なぜ間違ったのかも理解したくて。
回答3件
あなたの回答
tips
プレビュー