/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 問題 | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 01:54:41 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 問題 | Javaドリル https://minner.asia 32 32 104 「static修羅道」 StepFinal 問題 https://minner.asia/archives/5241 https://minner.asia/archives/5241#respond Wed, 28 May 2025 03:38:48 +0000 http://localhost/?p=5241

問題

あなたは、ゲームに登場するプレイヤーのスコアを管理するクラス Player を設計しようとしています。
このクラスには次の2つの目的があります:

  1. 各プレイヤーが持つ個別のスコアを保持する
  2. 全体での最高スコア(high score)を記録し、共有する

プレイヤーがスコアを更新するたびに、新しいスコアがそれまでの最高スコアを超えていれば、クラス全体の最高スコアも更新されるようにしてください。

以下のような出力になるように実装してください:

Alice のスコア: 50(現在の最高スコア: 50)
Bob のスコア: 80(現在の最高スコア: 80)
Alice のスコア: 100(現在の最高スコア: 100)

要件

  • Player クラスを作成すること
  • インスタンス変数:name, score を定義すること
  • static変数:highScore を定義し、すべてのプレイヤー間で共有すること
  • setScore(int newScore) メソッドで、スコア更新と highScore の自動更新を行うこと
  • display() メソッドで、名前 + スコア + 現在の最高スコア を出力すること
  • 出力には System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    Player p1 = new Player("Alice");
    Player p2 = new Player("Bob");

    p1.setScore(50);
    p1.display();

    p2.setScore(80);
    p2.display();

    p1.setScore(100);
    p1.display();
  }
}

ヒント

  • highScore はすべてのプレイヤーで共有される static 変数
  • setScore() の中で、if (newScore > highScore) で比較・更新
  • display() は name, score, highScore ã‚’1行で表示する

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5241/feed 0
104 「static修羅道」 Step09 問題 https://minner.asia/archives/5232 https://minner.asia/archives/5232#respond Wed, 28 May 2025 03:31:37 +0000 http://localhost/?p=5232

問題

あなたは、書類を処理する Document クラスを設計しています。
このクラスでは、次の2つの目的を達成してください:

  1. 各インスタンスが「自分が何ページの書類か」を記録する
  2. すべての書類インスタンスのページ数合計を、クラスで集計する

つまり、インスタンスごとのページ数と、全体での合計ページ数の両方を出力するようにします。

以下のような出力になるようにしてください:

書類A: 5ページ(現在の合計: 5)
書類B: 3ページ(現在の合計: 8)
書類C: 7ページ(現在の合計: 15)

要件

  • Document クラスを作成すること
  • インスタンス変数:title(書類のタイトル), pages(ページ数)を定義すること
  • static変数:totalPages を定義し、すべてのページ数の合計を保持すること
  • コンストラクタで、タイトルとページ数を受け取り、totalPages を加算すること
  • printInfo() メソッドで、各書類のページ数と合計ページ数を出力すること
  • 出力は System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    Document d1 = new Document("書類A", 5);
    Document d2 = new Document("書類B", 3);
    Document d3 = new Document("書類C", 7);

    d1.printInfo();
    d2.printInfo();
    d3.printInfo();
  }
}

ヒント

  • totalPages はクラス全体で共有される static 変数
  • totalPages += pages; のように、コンストラクタ内で加算する
  • printInfo() の中で static 変数とインスタンス変数を組み合わせて出力する

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5232/feed 0
104 「static修羅道」 Step08 問題 https://minner.asia/archives/5223 https://minner.asia/archives/5223#respond Wed, 28 May 2025 02:18:12 +0000 http://localhost/?p=5223

問題

あなたは、User クラスに greet() というメソッドを定義しようとしています。
このメソッドでは、ユーザーの名前(name)を使って挨拶メッセージを出力したいと考えています。

しかし、うっかりこの greet() メソッドを static として定義してしまうと、
name というインスタンス変数にアクセスできずエラーになることに気づきます。

この問題では、static メソッドと インスタンス変数の関係性を確認し、
エラーになる理由と正しい設計を体験してください。


出力のイメージ(正しく書けた場合)

Hello, Alice!
Hello, Bob!

要件

  • User クラスを作成し、インスタンス変数 name を定義すること
  • greet() メソッドで System.out.println("Hello, " + name + "!"); を出力すること
  • 最初に greet() ã‚’ static で書き、コンパイルエラーになることを確認する
  • エラーの原因を理解し、staticを外して修正したバージョンを作成すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    User u1 = new User("Alice");
    User u2 = new User("Bob");

    u1.greet();
    u2.greet();
  }
}

ヒント

  • staticメソッドは インスタンスがなくても呼べるが、
    インスタンス変数は インスタンスに属するため static からは見えない
  • static を外してメソッドをインスタンスメソッドにすれば name を使えるようになる

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5223/feed 0
104 「static修羅道」 Step07 問題 https://minner.asia/archives/5215 https://minner.asia/archives/5215#respond Wed, 28 May 2025 02:10:44 +0000 http://localhost/?p=5215

問題

あなたは、User クラスのインスタンスを生成するたびに、
一意の連番ID(ユーザーID) を自動的に割り振る仕組みを作ろうとしています。

IDは 1, 2, 3… と順に増加し、すべての User インスタンスで重複せずに一意になる必要があります。

このために、static 変数を使って、インスタンス生成時に自動的にIDが割り振られるようにしてください。

以下のような出力になるように実装してください:

[ID: 1] 名前: Alice
[ID: 2] 名前: Bob
[ID: 3] 名前: Carol

要件

  • User クラスを作成すること
  • static な nextId 変数(int型)を用意し、IDの連番管理を行うこと
  • 各インスタンスは id(int型)と name(String型)を保持すること
  • コンストラクタで id を自動的に割り当てること(nextId++)
  • printInfo() メソッドで [ID: x] 名前: y の形式で出力すること
  • 出力には System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    User u1 = new User("Alice");
    User u2 = new User("Bob");
    User u3 = new User("Carol");

    u1.printInfo();
    u2.printInfo();
    u3.printInfo();
  }
}

ヒント

  • nextId はすべてのインスタンスで共有する必要があるので static
  • id は個々のインスタンス専用なので非static
  • コンストラクタの中で id = nextId++ とすると一意の番号を割り振れる

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5215/feed 0
104 「static修羅道」 Step06 問題 https://minner.asia/archives/5206 https://minner.asia/archives/5206#respond Wed, 28 May 2025 02:03:02 +0000 http://localhost/?p=5206

問題

あなたは、アプリケーションの起動時に一度だけ読み込まれる 設定情報を管理するクラスを作ろうとしています。

このクラスでは、以下のような static変数 を用意し、それらを static初期化ブロックで初期化してください。

  • VERSION:アプリケーションのバージョン(例: "1.0.0")
  • DEBUG_MODE:デバッグモードのON/OFF(例: true)
  • LOADED_AT:設定が読み込まれた時刻(LocalDateTime.now() で取得)

この設定情報を表示する printConfig() という staticメソッド を定義し、
mainメソッドから1回だけ呼び出して、設定情報を出力してください。

出力例:

App Config:
VERSION: 1.0.0
DEBUG_MODE: true
LOADED_AT: 2025-05-26T10:15:30.123456

要件

  • AppConfig クラスを作成すること
  • VERSION, DEBUG_MODE, LOADED_AT はすべて static 変数として定義すること
  • 値の初期化はすべて static初期化ブロック の中で行うこと
  • printConfig() メソッドは static にし、mainメソッドから呼び出すこと
  • 出力は System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    AppConfig.printConfig();
  }
}

ヒント

  • static初期化ブロックは static { ... } の形式で書く
  • LocalDateTime.now() を使うには import java.time.LocalDateTime; が必要
  • 初期化はコンストラクタではなく、クラスが最初に読み込まれたときに1回だけ行われる

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5206/feed 0
104 「static修羅道」 Step05 問題 https://minner.asia/archives/5197 https://minner.asia/archives/5197#respond Wed, 28 May 2025 01:54:09 +0000 http://localhost/?p=5197

問題

あなたは、文字列に関する簡単なユーティリティクラス StringUtil を作成しようとしています。

このクラスには、次の2つの static メソッドを定義してください:

  1. isNullOrEmpty(String str)
     → 引数が null または空文字列("")であれば true を返す
  2. capitalize(String str)
     → 引数の先頭1文字を大文字にし、残りはそのまま返す(例:"hello" → "Hello")

このクラスは インスタンスを生成せずに 使用できるようにし、
以下のような出力になるようにしてください:

isNullOrEmpty(null): true
isNullOrEmpty(""): true
isNullOrEmpty("hello"): false
capitalize("hello"): Hello
capitalize(""): (空文字列)

要件

  • StringUtil クラスを作成すること
  • public static boolean isNullOrEmpty(String str) を定義すること
  • public static String capitalize(String str) を定義すること
  • StringUtil クラスはインスタンス化されないように private コンストラクタを定義すること
  • テストは Main クラスで new StringUtil() を使わずに実行すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    System.out.println("isNullOrEmpty(null): " + StringUtil.isNullOrEmpty(null));
    System.out.println("isNullOrEmpty(\"\"): " + StringUtil.isNullOrEmpty(""));
    System.out.println("isNullOrEmpty(\"hello\"): " + StringUtil.isNullOrEmpty("hello"));
    System.out.println("capitalize(\"hello\"): " + StringUtil.capitalize("hello"));
    System.out.println("capitalize(\"\"): " + StringUtil.capitalize(""));
  }
}

ヒント

  • isNullOrEmpty() では str == null || str.isEmpty() で判定できる
  • capitalize() では substring(0, 1).toUpperCase() と substring(1) を使う
  • 空文字列やnullを受け取ったときの安全な処理を忘れずに

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5197/feed 0
104 「static修羅道」 Step04 問題 https://minner.asia/archives/5185 https://minner.asia/archives/5185#respond Wed, 28 May 2025 01:39:07 +0000 http://localhost/?p=5185

問題

あなたは、アプリケーションで共通して使用される「定数」をまとめて管理する AppConstants クラスを作成しようとしています。

このクラスには以下のような定数を定義してください:

  • 税率(TAX_RATE)として 0.1(10%)
  • サービス名(SERVICE_NAME)として "MyApp"
  • 最大ログイン試行回数(MAX_LOGIN_ATTEMPTS)として 3

すべての定数は public static final として定義し、他のクラスから インスタンスを作らずに直接参照できるようにしてください。

以下のような出力になるようにしてください:

サービス名: MyApp
税率: 0.1
最大ログイン試行回数: 3

要件

  • AppConstants クラスを作成すること
  • 定数を public static final として定義すること
  • 定数の値は問題文に従うこと
  • main メソッドで AppConstants ã‚’ new せずに直接値を参照し、出力すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    System.out.println("サービス名: " + AppConstants.SERVICE_NAME);
    System.out.println("税率: " + AppConstants.TAX_RATE);
    System.out.println("最大ログイン試行回数: " + AppConstants.MAX_LOGIN_ATTEMPTS);
  }
}

ヒント

  • final は「変更不可」の意味、static は「クラスに属する」の意味
  • public static final にすることで、外部からクラス名で直接参照できる
  • 定数名は慣習として すべて大文字+アンダースコア区切り

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5185/feed 0
104 「static修羅道」 Step03 問題 https://minner.asia/archives/5177 https://minner.asia/archives/5177#respond Wed, 28 May 2025 01:29:48 +0000 http://localhost/?p=5177

問題

あなたは、各ユーザーがそれぞれのメッセージ数を持ちながら、
全体の送信メッセージ数も集計できるクラスを作ろうとしています。

User クラスには、以下の2つの情報を保持させてください:

  1. 各ユーザーごとの送信数 → インスタンス変数として保持
  2. 全ユーザー共通の送信数 → static変数として保持

各ユーザーが sendMessage() メソッドを呼び出すたびに、
そのユーザーの送信回数と、全体での送信回数がともに加算され、以下のように出力されるようにしてください。

Alice の送信回数: 1(全体: 1)
Bob の送信回数: 1(全体: 2)
Alice の送信回数: 2(全体: 3)

要件

  • User クラスを作成すること
  • name(インスタンス変数)、messageCount(インスタンス変数)、totalMessageCount(static変数)を持つこと
  • sendMessage() メソッドを定義し、以下の処理を行うこと:
    • messageCount と totalMessageCount ã‚’1ずつ加算する
    • 出力形式は:[ユーザー名] の送信回数: [個別](全体: [total])
  • すべての出力に System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    User u1 = new User("Alice");
    User u2 = new User("Bob");

    u1.sendMessage();
    u2.sendMessage();
    u1.sendMessage();
  }
}

ヒント

  • インスタンス変数は this. を使って更新する
  • static変数は User.totalMessageCount++ など、クラス名からもアクセスできる
  • それぞれの変数の スコープと共有性の違い に注目すること

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5177/feed 0
104 「static修羅道」 Step02 問題 https://minner.asia/archives/5167 https://minner.asia/archives/5167#respond Wed, 28 May 2025 01:17:03 +0000 http://localhost/?p=5167

問題

あなたは、複数の数値を扱う簡単なユーティリティクラスを作ろうとしています。
このクラスには、2つの整数の和を求める add メソッドと、差を求める subtract メソッドを定義してください。
どちらも static メソッドとして実装し、インスタンスを生成せずに呼び出せるようにしてください。

以下のような出力になるように実装してください:

10 + 3 = 13
10 - 3 = 7

要件

  • CalcUtil クラスを作成すること
  • public static int add(int a, int b) を定義し、a + b を返すこと
  • public static int subtract(int a, int b) を定義し、a – b を返すこと
  • main メソッドでは new CalcUtil() を使わずに add と subtract を呼び出すこと
  • 出力は System.out.println を使用すること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    int sum = CalcUtil.add(10, 3);
    int diff = CalcUtil.subtract(10, 3);

    System.out.println("10 + 3 = " + sum);
    System.out.println("10 - 3 = " + diff);
  }
}

ヒント

  • staticメソッドは クラス名.メソッド名() の形式で呼び出す
  • staticメソッドには インスタンス変数を使わないこと
  • ユーティリティクラスは通常、すべてのメソッドを static にして new しないで使う

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5167/feed 0
104 「static修羅道」 Step01 問題 https://minner.asia/archives/5158 https://minner.asia/archives/5158#respond Wed, 28 May 2025 01:05:22 +0000 http://localhost/?p=5158

問題

あなたは、ユーザーのログイン回数を記録する簡単な仕組みを作ろうとしています。
複数の User インスタンスを生成し、それぞれがログインするたびに、全体で何回ログインが発生したかを static 変数でカウントしてください。

以下のような出力になるように実装してください:

Alice がログインしました(累計ログイン回数: 1)
Bob がログインしました(累計ログイン回数: 2)
Alice がログインしました(累計ログイン回数: 3)

要件

  • User クラスを作成すること
  • name(インスタンス変数)と loginCount(static変数)を持つこと
  • login() メソッドを定義し、名前と累計ログイン回数を出力すること
  • loginCount はすべてのインスタンスで共有され、ログインのたびに加算されること

テストコード(Main.java)

public class Main {
  public static void main(String[] args) {
    User u1 = new User("Alice");
    User u2 = new User("Bob");

    u1.login();
    u2.login();
    u1.login();
  }
}

ヒント

  • static int loginCount = 0; のように静的変数を定義する
  • login() メソッド内で loginCount++ して出力する
  • loginCount は User クラス全体で共有されるため、インスタンスごとに分かれてはいけない

→ 解答例はこちら

104 ステップアップ問題 「static修羅道」

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

]]>
https://minner.asia/archives/5158/feed 0