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

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:真偽値を返すメソッド

この記事の練習問題で使用する知識:
基礎構文と制御構造(レッスン1~2)メソッドの定義と呼び出しメソッドの戻り値真偽値を返すメソッドメソッドのオーバーロードジェネリクス

<<前のページ 問題集Top 次のページ>>

JAVAの「真偽値を返すメソッド」とは

この章ではJAVAにおける「真偽値を返すメソッド」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。




Javaではメソッドを使って特定の条件に基づいて処理を行うことが可能です。

その中でも真偽値を返すメソッドは、条件に合致するかどうかを確認し、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標準ライブラリの真偽値を返すメソッド

Javaには既に多くの便利な真偽値を返すメソッドが用意されています。

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

  • isEmpty()Stringクラスに属するメソッドで、文字列が空の場合にtrueを返します。たとえば、"".isEmpty()trueを返し、"hello".isEmpty()falseを返します。
  • contains()StringクラスやListクラスなどに属し、指定された要素や文字列が含まれている場合にtrueを返します。たとえば、"hello".contains("he")trueを返し、"hello".contains("world")falseを返します。
  • startsWith() / endsWith()Stringクラスのメソッドで、文字列が特定の文字列で始まるか、または終わるかを確認できます。例えば、"hello".startsWith("he")trueを返します。

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

まとめ

真偽値を返すメソッドは条件に基づく判断を行う際に非常に便利です。

条件に応じてtruefalseを返すことで複雑な条件分岐を簡潔に記述できるため、コードの可読性が向上します。

Javaの標準ライブラリにも多くの真偽値メソッドが含まれているため、必要に応じて使いこなしてみましょう。

練習問題3-3:割り切り判定プログラムを作成しよう

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

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

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

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

この問題の要件

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

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

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

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

この問題を解くヒント

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

ヒント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」と出力

ヒント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」と出力するコードを書いてください。
        */
    }
}

以上がこの問題の穴埋めコードです。

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



解答例と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

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

正解コードの解説

今回のJavaコードでは10をある数で割り切れるかを判定するプログラムを作成しています。

このコードはユーザーから指定された数値で割り切れるかどうかを確認し、その結果を表示します。

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プログラムの基礎を理解し、ぜひ他のケースでもこの考え方を試してみてください。

<<前のページ 問題集Top 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る