【Java】レッスン3-3:真偽値を返すメソッドを理解しよう

ながみえ

一つ前のページではメソッドの戻り値について学習しました。

今回は 真偽値を返すメソッド について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド編

 ・Lesson3-1:メソッドの基本を確認しよう
 ・Lesson3-2:メソッドの戻り値を理解しよう
 ・Lesson3-3:真偽値を返すメソッドを理解しよう ◁今回はココ
 ・Lesson3-4:メソッドのオーバーロードを理解しよう
 ・Lesson3-5:ジェネリクスを理解しよう
 ・確認問題3-☆1:石取りゲームを作ろう
 ・確認問題3-☆2:丁半賭博ゲームを作ろう
Lesson4:コレクション編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

boolean型メソッドの基礎|true・falseで行う条件判定と活用方法

プログラムでは、ある条件が「正しいか」「間違っているか」を判定する処理が頻繁に登場します。

この判定結果を真偽値(boolean型)として返すメソッドを使うことで、条件分岐や繰り返し処理をよりシンプルかつ明確に記述できます。

本記事では、booleanメソッドの基本的な書き方から、truefalseの返し方、isEmptycontainsといった代表的な判定メソッドの例までを初心者向けに解説します。

これを学べば、条件判定をスマートに組み込み、可読性の高いコードを書けるようになるでしょう。

それでは、真偽値を返すメソッドの世界に踏み込んでいきましょう。

boolean型の基本|true・falseによる条件判定とコード例

真偽値を返すメソッドとは、条件に基づいた処理の結果としてboolean型の値(truefalse)を返すメソッドです。

このようなメソッドは条件に合致するかどうかを判定する場面で役立ちます。

例えば入力された文字列が空であるかどうかや、特定の値が配列に含まれているかどうかを確認する場合に真偽値を返すメソッドが利用されます。

真偽値を返すメソッドの簡単な例として、ある数が偶数かどうかを判定するisEvenメソッドを実装してみましょう。

このメソッドは整数を引数として受け取り、その数が偶数ならtrue、奇数ならfalseを返します。

public class Main {
    // 真偽値を返すメソッドの定義
    public static boolean isEven(int number) {	//boolean型の戻り値をもつisEvenメソッドの定義
        return number % 2 == 0;		// 偶数ならtrue、奇数ならfalseを返す
    }
    public static void main(String[] args) {	//メインメソッド
        int num = 4;
        // isEvenメソッドの呼び出しと結果の表示
        if (isEven(num)) {
            System.out.println(num + "は偶数です。");
        } else {
            System.out.println(num + "は奇数です。");
        }
    }
}

このコードではisEvenメソッドが引数として与えられた整数が偶数かどうかを判定し、結果としてtrueまたはfalseを返します。

例えば変数numが4であれば、isEven(num)trueを返し「4は偶数です。」と表示されます。

このように真偽値を返すメソッドは条件判断を簡潔に表現できるため、コードの可読性や再利用性が向上します。

Java標準のbooleanメソッド紹介|代表的な条件判定メソッド一覧

Javaには、真偽値を返すメソッドが初めから多数用意されています。

以下に代表的なメソッドをいくつか紹介します。

isEmpty()メソッド|文字列が空かどうかを判定

Stringクラスに属するメソッドで、文字列が空の場合にtrueを返します。

String text1 = "";
String text2 = "hello";
boolean result1 = text1.isEmpty();	// True
boolean result2 = text2.isEmpty();	// False
boolean result3 = !text2.isEmpty();	// True

contains()メソッド|文字列やコレクションに要素が含まれるか判定

StringクラスやListクラスなどに属し、指定された要素や文字列が含まれている場合にtrueを返します。

String text1 = "world";
String text2 = "hello";
boolean result1 = text1.contains("he"); 	// False
boolean result2 = text2.contains("he"); 	// True
boolean result3 = "hello".containsy("he");	// true

たとえば、"hello".contains("he")trueを返し、"hello".contains("world")falseを返します。

startsWith()とendsWith()メソッド|文字列の先頭・末尾を判定

Stringクラスのメソッドで、文字列が特定の文字列で始まるか、または終わるかを確認できます。

String text1 = "world";
String text2 = "hello";
boolean result1 = text1.startsWith("w"); 	// True
boolean result2 = text2.startsWith("w"); 	// False
boolean result3 = text1.endsWith("old"); 	// True
boolean result4 = text2.endsWith("old"); 	// False

これらのメソッドを活用することで、文字列やリスト内での特定の条件チェックを効率的に行えます。

まとめ|条件判定をシンプルにするboolean活用の基礎

今回の学習では、boolean型メソッドの基本的な役割とコード例、そしてJava標準の代表的な判定メソッドであるisEmpty()contains()startsWith()endsWith()の使い方を学びました。

これにより、条件分岐やデータ判定をシンプルに記述でき、コードの可読性と保守性を大きく向上させることができます。

条件判定を適切に設計できる力は、あらゆるJavaプログラムにおいて必須のスキルです。

ここで得た知識を活かし、さらに応用的なロジック作りに挑戦していきましょう。

練習問題|割り切り判定プログラムでbooleanメソッドを活用しよう

数値が特定の値で割り切れるかどうかを判定するプログラムを作成しましょう。

このプログラムでは10という固定の値に対して、ユーザーが入力した数値で割り切れるかを判定します。

割り切れる場合には「割り切れる: true」、割り切れない場合には「割り切れない: false」と表示されます。

また入力値が0以下または10を超える場合は「割り切れない」と判定されます。

この問題の要件

以下の要件に従ってコードを完成させてください。

  1. メソッド名isDividable
  2. 引数
    • 整数 a(固定値として10を代入すること)
    • 整数 b(ユーザーから入力する値)
  3. 処理内容
    • b が0以下、または10より大きい場合は false を返すこと。
    • a を b で割った結果が余りなく割り切れる場合に true を返すこと。
    • main メソッドで Scanner を使用し、ユーザーから b の値を入力させること。
    • isDividable メソッドを呼び出して、結果を表示すること。
  4. 表示形式
    • 割り切れる: true または 割り切れない: false と出力すること。

ただし、以下のような実行結果となること。

割る数を入力してください (0 < b <= 10): 5
割り切れる: true
割る数を入力してください (0 < b <= 10): 3
割り切れない: false

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:Scannerクラスをインポート
2:Mainクラスの定義
  □ isDividableメソッドの定義
  □ □ bが0または10より大きい場合はfalseを返す
  □ □ aがbで割り切れる場合はtrueを返す
  □ mainメソッドの定義
  □ □ 変数aに10を代入
  □ □ Scannerオブジェクトscannerの初期化
  □ □ 「割る数を入力してください (0 < b <= 10): 」と出力
  □ □ ユーザーから整数値を入力し、変数bに代入
  □ □ if文にてisDividableメソッドの戻り値がtrueか判定
  □ □ □ 真の場合、「割り切れる: true」と出力
  □ □ else
  □ □ □ 偽の場合、「割り切れない: false」と出力

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

import java.util.Scanner;

public class Main {
    // aをbで割り切れるか判定するメソッド
    public static boolean isDividable(int a, int b) {
        /*【穴埋め問題1】
        ここでbが0または10より大きいかを判定し、該当する場合はfalseを返すコードを書いてください。(早期リターン)
        */

        /*【穴埋め問題2】
        ここでaがbで割り切れるかを判定し、その結果を返すコードを書いてください。
        */
    }

    public static void main(String[] args) {
        int a = 10; // 固定値
        Scanner scanner = new Scanner(System.in); // 入力の基本

        System.out.print("割る数を入力してください (0 < b <= 10): ");
        int b = scanner.nextInt(); // ユーザーからbの値を入力

        // isDividableメソッドを呼び出し、結果を確認して出力
        /*【穴埋め問題3】
        ここでisDividableメソッドを呼び出し、その結果に応じて「割り切れる: true」または「割り切れない: false」と出力するコードを書いてください。
        */
    }
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
import java.util.Scanner;

public class Main {
    // aをbで割り切れるか判定するメソッド
    public static boolean isDividable(int a, int b) {
        // bが0または10より大きい場合は早期リターンでfalseを返す
        if (b == 0 || b > 10) {
            return false;
        }
        // aがbで割り切れるかを判定し、結果を返す
        return a % b == 0;
    }

    public static void main(String[] args) {
        int a = 10; // 固定値
        Scanner scanner = new Scanner(System.in); // 入力の基本

        System.out.print("割る数を入力してください (0 < b <= 10): ");
        int b = scanner.nextInt(); // ユーザーからbの値を入力

        // isDividableメソッドを呼び出し、結果を確認して出力
        if (isDividable(a, b)) { // if文による分岐処理
            System.out.println("割り切れる: true");
        } else {
            System.out.println("割り切れない: false");
        }
    }
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

import文とクラスの定義

import java.util.Scanner;
public class Main {
  • import java.util.Scanner;:ユーザーからの入力を受け取るために、Scannerクラスをインポートしています。Scannerクラスを使うと、コンソールからユーザーが入力したデータをプログラムに読み込むことができます。
  • public class Main {:Javaのクラスを定義しています。このクラスの名前はMainで、プログラム全体のエントリーポイントとなります。

isDividableメソッドの定義

public static boolean isDividable(int a, int b) {
    if (b == 0 || b > 10) {
        return false;
    }
    return a % b == 0;
}
  • public static boolean isDividable(int a, int b) {:このメソッドは、「aがbで割り切れるかどうか」を判定するメソッドです。戻り値がboolean型(真偽値)であることがポイントです。割り切れる場合はtrue、割り切れない場合はfalseを返します。
  • if (b == 0 || b > 10) { return false; }:ここでは、bが0または10より大きい場合に、割り算ができないためfalseを返します。bに0が入力されるとエラーになるため、事前にチェックしています。
  • return a % b == 0;abで割った余りが0であれば割り切れるので、trueを返します。

mainメソッドの定義

public static void main(String[] args) {
    int a = 10; // 固定値
    Scanner scanner = new Scanner(System.in); // 入力の基本
  • public static void main(String[] args) {mainメソッドはプログラムのエントリーポイントです。ここからプログラムが実行されます。
  • int a = 10;:今回は10という固定の値を使って、割り切れるかどうかを調べます。
  • Scanner scanner = new Scanner(System.in);Scannerオブジェクトを作成し、コンソールからユーザーが入力できるようにします。

ユーザーからの入力とメソッドの呼び出し

System.out.print("割る数を入力してください (0 < b <= 10): ");
int b = scanner.nextInt(); // ユーザーからbの値を入力
  • System.out.print("割る数を入力してください (0 < b <= 10): ");:ユーザーに「割り切り判定をしたい数(b)」を入力してもらうためにメッセージを表示します。
  • int b = scanner.nextInt();:ユーザーが入力した値を整数として読み込み、bに代入します。

isDividableメソッドの呼び出しと結果の表示

if (isDividable(a, b)) {
    System.out.println("割り切れる: true");
} else {
    System.out.println("割り切れない: false");
}
  • if (isDividable(a, b)) {:ここでisDividableメソッドを呼び出し、abが割り切れる場合はtrueを返します。
  • System.out.println("割り切れる: true");trueが返された場合、「割り切れる: true」と表示されます。
  • System.out.println("割り切れない: false");falseが返された場合、「割り切れない: false」と表示されます。
もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました