- ベストアンサー
for文
質問お願い致します。 これのソースのfor文を一つの文にするにはどのように書いたらよいでしょうか? お願い致します。 //指定された文字列が"a"と"b"の両方を含む場合はtrue、なければfalseを返す public class Mondai { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; break; } } for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'b') { answer2 = true; break; } } return answer1 && answer2; } }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ループの中で、「両方見つかった?」判定をして、「見つかった」ならtrueで終了。 そうではなくて、ループが終わった→見つからなかった→false という形式にしました。 ループの中での return が嫌なら、そこはbreakにしといて、 ループの後のreturn false を return answer1 && answer2 とする。 public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; } if (c == 'b') { answer2 = true; } // 両方とも見つかれば、終了。 if (answer1 && answer2) { return true; } } // 「両方とも見つかった」に成らずにループを終わったのでfalse。 return false; }
その他の回答 (3)
- i2719
- ベストアンサー率35% (11/31)
何のためにfor文を一つにしたいのでしょうか。 public static boolean charBothContain(String str) { return charContain(str, 'a') && charContain(str, 'b'); } public static boolean charContain(String str, char ch) { for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ch) return true; } return false; }
- himajin100000
- ベストアンサー率54% (1660/3060)
public class Mondai2 { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { boolean answer1 = false; boolean answer2 = false; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == 'a') { answer1 = true; } if (c == 'b') { answer2 = true; } } return answer1 && answer2; } } /* ってな感じ? 別にelse ifでもいいけど。 break;しないようにした。 */
- himajin100000
- ベストアンサー率54% (1660/3060)
public class Mondai { public static void main(String[] args) { System.out.println("解答 :" + charBothContain("Habllow")); } public static boolean charBothContain(String str) { return ((str.indexOf("a") != -1) && (str.indexOf("b") != -1)); } } /* って方が早いのでは? */
お礼
ご回答頂きありがとうございました。 for文で考えたいのでfor文の回答も頂けたら幸いです