はじめに
この実験では、Character クラスの一部である Java の forDigit() メソッドについて学びます。このメソッドは、指定された基数に従って、指定された桁の指定された文字表現を返します。
Java ファイルを作成する
次のコマンドを使用して、~/project ディレクトリに CharForDigit.java という名前の Java ファイルを作成します。
touch ~/project/CharForDigit.java
初期コードを追加する
CharForDigit.java ファイルに次のコードを追加します。
public class CharForDigit {
public static void main(String[] args) {
int n1 = 8;
int n2 = 23;
int n3 = 30;
char ch1 = Character.forDigit(n1, 9);
char ch2 = Character.forDigit(n2, 25);
char ch3 = Character.forDigit(n3, 36);
System.out.println("The char representation of " + n1 + " in radix 9 is " + ch1);
System.out.println("The char representation of " + n2 + " in radix 25 is " + ch2);
System.out.println("The char representation of " + n3 + " in radix 36 is " + ch3);
}
}
このコードは、main メソッドを持つ CharForDigit クラスを作成します。main メソッドは、異なる基数での桁の文字表現を取得するために forDigit() メソッドをどのように使用するかを示しています。
コードをコンパイルして実行する
次のコマンドを使用して CharForDigit.java ファイルをコンパイルします。
javac CharForDigit.java
次に、次のコマンドを使用してコードを実行します。
java CharForDigit
次の出力が表示されるはずです。
The char representation of 8 in radix 9 is 8
The char representation of 23 in radix 25 is n
The char representation of 30 in radix 36 is u
この出力は、forDigit() メソッドが期待通りに機能することを確認しています。
ユーザー入力を追加する
さて、ここではコードを変更して、桁と基数のユーザー入力を受け付けるようにしましょう。初期コードの後に次のコードを追加します。
Scanner sc = new Scanner(System.in);
System.out.print("Enter digit: ");
int d = sc.nextInt();
System.out.print("Enter radix: ");
int r = sc.nextInt();
char result = Character.forDigit(d, r);
System.out.println("The character at radix \'" + r + "\' for the digit " + d + " is: " + result);
このコードは、ユーザーに桁と基数を入力してもらい、コンソールから入力を読み取り、forDigit() メソッドを使って桁の文字表現を取得します。
ユーザー入力付きでコードをコンパイルして実行する
次のコマンドを使用して修正済みの CharForDigit.java ファイルをコンパイルします。
javac CharForDigit.java
次に、次のコマンドを使用してコードを実行します。
java CharForDigit
コンソールに次のプロンプトが表示されるはずです。
Enter digit:
桁(たとえば 12)を入力して Enter キーを押します。次のプロンプトが表示されるはずです。
Enter radix:
基数(たとえば 16)を入力して Enter キーを押します。その後、次の出力が表示されるはずです。
The character at radix '16' for the digit 12 is: c
この出力は、修正済みのコードが期待通りに機能することを確認しています。
無効な入力のテスト
コードを変更して、無効なユーザー入力を処理できるようにします。ユーザー入力コードの後に次のコードを追加します。
} catch (InputMismatchException e) {
System.out.println("Invalid input!");
}
このコードは、ユーザーが整数として解析できない入力を入力した場合に、Scanner クラスによってスローされる InputMismatchException をキャッチします。
修正されたコードをコンパイルして実行する
次のコマンドを使用して修正済みの CharForDigit.java ファイルをコンパイルします。
javac CharForDigit.java
次に、次のコマンドを使用してコードを実行します。
java CharForDigit
コンソールに次のプロンプトが表示されるはずです。
Enter digit:
数値以外の入力(たとえば "abc")を入力して Enter キーを押します。次の出力が表示されるはずです。
Invalid input!
この出力は、コードが期待通りに無効な入力を処理することを確認しています。
無効な基数のテスト
入力された基数が有効かどうかをチェックするようにコードを変更します。ユーザー入力コードの後に次のコードを追加します。
if (r < Character.MIN_RADIX || r > Character.MAX_RADIX) {
System.out.println("Invalid radix!");
return;
}
このコードは、入力された基数が最小基数未満または最大基数を超えているかどうかをチェックします。そうであれば、メッセージを表示してプログラムを終了します。
修正されたコードをコンパイルして実行する
次のコマンドを使用して修正された「CharForDigit.java」ファイルをコンパイルします。
javac CharForDigit.java
次に、次のコマンドを使用してコードを実行します。
java CharForDigit
コンソールに次のプロンプトが表示されるはずです。
Enter digit:
桁(たとえば 6)を入力して Enter キーを押します。次のプロンプトが表示されるはずです。
Enter radix:
基数を 2 未満または 36 より大きい値(たとえば 1 または 100)を入力して Enter キーを押します。次の出力が表示されるはずです。
Invalid radix!
この出力は、コードが期待通りに無効な基数を処理することを確認しています。
まとめ
この実験では、指定された基数で桁の文字表現を取得するために Character クラスの forDigit() メソッドをどのように使用するかを学びました。また、ユーザー入力を処理して有効な入力をチェックする方法も学びました。



