JAVA練習問題2-☆4:文字列をひっくり返そう

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

JAVAの初心者向け問題2-☆4:文字列をひっくり返そう

この問題を解くために必要な知識:
【レベル1の知識】
コメントの書き方、変数と定数、基本データ型とプリミティブ型、四則演算と論理演算、入力と出力(Scannerクラス)、配列、分岐処理(if、if~else、switch)、繰り返し処理(for、while、do~while)

【レベル2の知識】
メソッドの定義と呼び出し、メソッドの戻り値、メソッドのオーバーロード例外処理(try-catch文、throws、throw)、クラスの定義と使用、インスタンスコンストラクタ

<<前の問題 問題集Top 次の問題>>

JAVA練習問題2-☆4_文字列をひっくり返そう





ユーザーが入力した文字列を反転させるプログラムを作成しましょう。

この問題の要件

以下の要件に従ってコードを作成して下さい。

  • ユーザーから文字列を入力させること。
  • 入力された文字列を反転するメソッド reverseString を定義すること。
  • 反転された文字列を日本語で出力すること。

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

----- ↓出力される結果の例↓ -----

文字列を入力してください:
こんにちは
反転された文字列は: はちにんこ

----- ↑出力される結果の例↑ -----

この問題を解くヒント

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

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

正解のコードは上から順に以下のような構成となっています。

1.import文
 1-1. Scannerクラスのインポート
2.StringReverserクラスの定義
 2-1. mainメソッド
  2-1-1. ユーザーから文字列を入力するためのScannerオブジェクトを作成
  2-1-2. ユーザーに文字列の入力を促すメッセージを表示
  2-1-3. ユーザーが入力した文字列をinput変数に格納
  2-1-4. reverseStringメソッドを呼び出して、入力された文字列を反転
  2-1-5. 反転された文字列をreversed変数に格納
  2-1-6. 反転された文字列を出力
3.reverseStringメソッドの定義
 3-1. 引数として受け取った文字列strをStringBuilderオブジェクトに変換
 3-2. StringBuilderのreverseメソッドを呼び出して文字列を反転
 3-3. 反転された文字列を文字列型に変換して返す

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

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

import java.util.Scanner;

public class StringReverser {

    public static void main(String[] args) {
        // 1. ユーザーから文字列を入力させる
        Scanner scanner = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String input = scanner.nextLine();

        // 2. ***このコメントを消して、入力された文字列を反転するためのreverseStringメソッドを呼び出し、結果をreversed変数に格納するコードを書いてください。***

        // 3. 反転された文字列を出力
        System.out.println("反転された文字列は: " + reversed);
    }

    // 反転するメソッド
    public static String reverseString(String str) {
        // ***このコメントを消して、StringBuilderクラスを使って文字列を反転し、その結果を返すコードを書いてください。***
    }
}

 

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

解答例

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

正解コードの例

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

********************

import java.util.Scanner;

public class StringReverser {

    public static void main(String[] args) {
        // 1. ユーザーから文字列を入力させる
        Scanner scanner = new Scanner(System.in);
        System.out.println("文字列を入力してください:");
        String input = scanner.nextLine();

        // 2. 入力された文字列を反転する
        String reversed = reverseString(input);

        // 3. 反転された文字列を出力
        System.out.println("反転された文字列は: " + reversed);
    }

    // 反転するメソッド
    public static String reverseString(String str) {
        // 文字列を反転するために StringBuilder を使用
        StringBuilder reversed = new StringBuilder(str);
        return reversed.reverse().toString();
    }
}

********************

コードの解説

ユーザーから文字列を入力させる

Scanner scanner = new Scanner(System.in);
System.out.println("文字列を入力してください:");
String input = scanner.nextLine();

ここでは、Scannerクラスを使用して、ユーザーから文字列を入力させています。

ScannerはJavaの標準ライブラリに含まれているクラスで、ユーザーの入力を取得するために使用されます。

System.inは標準入力を指し、ユーザーが入力したデータを読み取るために使われます。

scanner.nextLine()はユーザーが入力した一行の文字列を読み取ります。

これにより、プログラムはユーザーが入力した文字列をinputという変数に保存します。

入力された文字列を反転する

String reversed = reverseString(input);

ここでは、入力された文字列を反転するために、reverseStringというメソッドを呼び出しています。

reverseString(input)は、引数としてユーザーが入力した文字列inputを受け取り、その文字列を反転した結果をreversed変数に代入します。

反転された文字列を出力

System.out.println("反転された文字列は: " + reversed);

この行は、reversedに保存された反転された文字列をコンソールに出力します。System.out.printlnは、標準出力に文字列を表示するためのメソッドです。

+は文字列を連結するために使われ、"反転された文字列は: "の後に反転された文字列が表示されます。

文字列を反転するメソッド

public static String reverseString(String str) {
    StringBuilder reversed = new StringBuilder(str);
    return reversed.reverse().toString();
}

この部分は、文字列を反転させるためのメソッドreverseStringです。

StringBuilderクラスは、文字列を操作するための可変の文字列クラスで、Stringよりも効率的に文字列を操作できます。

new StringBuilder(str)は、引数で渡された文字列strを元に、新しいStringBuilderオブジェクトを作成します。

次に、reversed.reverse()を呼び出すことで、StringBuilderオブジェクト内の文字列を反転します。

最後に、toString()を使って、StringBuilderオブジェクトを再びStringに変換して返します。

これにより、元の文字列が反転された形で戻されます。

<<前の問題 問題集Top 次の問題>>

この問題への質問・コメント

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

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






    JAVA練習問題集へ戻る
    トップページへ戻る