初級問題 (9問)
メソッド基礎
- 引数なしメソッド: “Hello, World!”と表示する
greetメソッドを作成してください。
- 引数ありメソッド: 名前を受け取り、”Hello, [名前]!”と表示する
greetWithNameメソッドを作成してください。
- 戻り値ありメソッド: 2つの整数を受け取り、その和を返す
addメソッドを作成してください。
- メソッドのオーバーロード:
addメソッドを、double型にも対応できるようにオーバーロードしてください。
- voidメソッド: 受け取った数値が偶数か奇数かを表示する
checkEvenOddメソッドを作成してください。
- 複数引数メソッド: 3つの整数を受け取り、その平均を返す
averageメソッドを作成してください。
- 文字列操作メソッド: 文字列を受け取り、その長さを返す
getStringLengthメソッドを作成してください。
- ローカル変数: メソッド内でローカル変数を使用する例を作成してください。
- メソッド呼び出し: mainメソッドから他のメソッドを呼び出す例を作成してください。
中級問題 (15問)
クラス基礎
- クラス定義:
Personクラスを定義し、nameとageのフィールドを持たせてください。
- コンストラクタ:
Personクラスに、nameとageを初期化するコンストラクタを追加してください。
- ゲッター/セッター:
Personクラスに、nameとageのゲッターとセッターを追加してください。
- メソッド追加:
Personクラスに、自己紹介をするintroduceメソッドを追加してください。
- オブジェクト生成: mainメソッドで
Personクラスのインスタンスを生成し、メソッドを呼び出してください。
- 複数オブジェクト: 2つの
Personオブジェクトを生成し、それぞれ異なるデータを設定してください。
- staticメソッド:
MathUtilityクラスを作成し、円の面積を計算するstaticメソッドを追加してください。
- static変数:
Personクラスに生成されたインスタンスの数をカウントするstatic変数を追加してください。
- カプセル化:
BankAccountクラスを作成し、残高(balance)をprivateで宣言し、適切なアクセスメソッドを追加してください。
- thisキーワード: コンストラクタやメソッドで
thisキーワードを使用する例を作成してください。
クラス活用
- 配列とオブジェクト:
Personオブジェクトの配列を作成し、データを設定するプログラムを作成してください。
- メソッド配列引数: 整数配列を受け取り、その合計を返すメソッドを作成してください。
- オブジェクト配列戻り値: 複数の
Personオブジェクトを生成して返すメソッドを作成してください。
- nullチェック: メソッド内でオブジェクトがnullかどうかをチェックする処理を追加してください。
- 不変オブジェクト: 不変(immutable)な
Studentクラスを作成してください。
上級問題 (6問)
- 再帰的メソッド: 再帰を使用して階乗を計算するメソッドを作成してください。
- 例外処理: メソッド内で例外をスローし、呼び出し元でキャッチする例を作成してください。
- 可変長引数: 可変長引数を受け取り、その平均を計算するメソッドを作成してください。
- メソッドチェーン: メソッドチェーンが可能な
StringBuilderのようなクラスを作成してください。
- ファクトリメソッド: オブジェクト生成を担当するstaticファクトリメソッドを持つクラスを作成してください。
- シングルトンパターン: シングルトンパターンを実装したクラスを作成してください。
Javaのメソッドとクラス基礎 解答例
初級問題の解答
- 引数なしメソッド
public static void greet() {
System.out.println("Hello, World!");
}
- 引数ありメソッド
public static void greetWithName(String name) {
System.out.println("Hello, " + name + "!");
}
- 戻り値ありメソッド
public static int add(int a, int b) {
return a + b;
}
- メソッドのオーバーロード
public static double add(double a, double b) {
return a + b;
}
- voidメソッド
public static void checkEvenOdd(int num) {
if (num % 2 == 0) {
System.out.println(num + "は偶数です");
} else {
System.out.println(num + "は奇数です");
}
}
- 複数引数メソッド
public static double average(int a, int b, int c) {
return (a + b + c) / 3.0;
}
- 文字列操作メソッド
public static int getStringLength(String str) {
return str.length();
}
- ローカル変数
public static void exampleMethod() {
int localVar = 10; // ローカル変数
System.out.println(localVar);
}
- メソッド呼び出し
public static void main(String[] args) {
greet();
greetWithName("Alice");
int sum = add(5, 3);
System.out.println("合計: " + sum);
}
中級問題の解答
- クラス定義
class Person {
String name;
int age;
}
- コンストラクタ
class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
- ゲッター/セッター
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- メソッド追加
class Person {
// ... 他のコード ...
public void introduce() {
System.out.println("こんにちは、私は" + name + "です。" + age + "歳です。");
}
}
- オブジェクト生成
public static void main(String[] args) {
Person person = new Person("田中", 25);
person.introduce();
}
- 複数オブジェクト
Person person1 = new Person("佐藤", 30);
Person person2 = new Person("鈴木", 22);
person1.introduce();
person2.introduce();
- staticメソッド
class MathUtility {
public static double calculateCircleArea(double radius) {
return Math.PI * radius * radius;
}
}
- static変数
class Person {
private static int count = 0;
public Person() {
count++;
}
public static int getCount() {
return count;
}
}
- カプセル化
class BankAccount {
private double balance;
public double getBalance() {
return balance;
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
}
}
}
- thisキーワード
class Person {
private String name;
public Person(String name) {
this.name = name; // thisでフィールドを参照
}
public void setName(String name) {
this.name = name;
}
}
- 配列とオブジェクト
Person[] people = new Person[3];
people[0] = new Person("山田", 20);
people[1] = new Person("佐藤", 25);
people[2] = new Person("田中", 30);
for (Person person : people) {
person.introduce();
}
- メソッド配列引数
public static int sumArray(int[] numbers) {
int sum = 0;
for (int num : numbers) {
sum += num;
}
return sum;
}
- オブジェクト配列戻り値
public static Person[] createPeople() {
Person[] people = new Person[2];
people[0] = new Person("Alice", 25);
people[1] = new Person("Bob", 30);
return people;
}
- nullチェック
public static void printPersonInfo(Person person) {
if (person == null) {
System.out.println("Personオブジェクトがnullです");
return;
}
person.introduce();
}
- 不変オブジェクト
final class Student {
private final String name;
private final int id;
public Student(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
}
上級問題の解答
- 再帰的メソッド
public static int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
- 例外処理
public static void riskyMethod() throws Exception {
throw new Exception("何か問題が発生しました");
}
public static void main(String[] args) {
try {
riskyMethod();
} catch (Exception e) {
System.out.println("エラー: " + e.getMessage());
}
}
- 可変長引数
public static double average(int... numbers) {
if (numbers.length == 0) return 0;
int sum = 0;
for (int num : numbers) {
sum += num;
}
return (double)sum / numbers.length;
}
- メソッドチェーン
class MyStringBuilder {
private String value;
public MyStringBuilder() {
value = "";
}
public MyStringBuilder append(String str) {
value += str;
return this;
}
public String toString() {
return value;
}
}
// 使用例
MyStringBuilder sb = new MyStringBuilder();
sb.append("Hello").append(" ").append("World");
System.out.println(sb.toString());
- ファクトリメソッド
class Product {
private String name;
private double price;
private Product(String name, double price) {
this.name = name;
this.price = price;
}
public static Product createProduct(String name, double price) {
return new Product(name, price);
}
}
- シングルトンパターン
class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}