• ベストアンサー

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; } }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

ループの中で、「両方見つかった?」判定をして、「見つかった」なら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)
回答No.4

何のために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; }

回答No.2

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;しないようにした。 */

回答No.1

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)); } } /* って方が早いのでは? */

me-ko99999
質問者

お礼

ご回答頂きありがとうございました。 for文で考えたいのでfor文の回答も頂けたら幸いです

関連するQ&A