はじめに
この実験では、Java のparseUnsignedInt()
メソッドを使って文字列を符号なしの 10 進整数として解析する方法を学びます。このメソッドの構文、パラメータ、戻り値の型について説明し、いくつかの例を使ってその使い方を学びます。
この実験では、Java のparseUnsignedInt()
メソッドを使って文字列を符号なしの 10 進整数として解析する方法を学びます。このメソッドの構文、パラメータ、戻り値の型について説明し、いくつかの例を使ってその使い方を学びます。
まず、~/project
ディレクトリに新しい Java ファイルを作成する必要があります。これは、ターミナルを開いて次のコマンドを入力することで行えます。
touch ~/project/UnsignedIntegerParser.java
これにより、空白の Nano エディタウィンドウが開きます。
parseUnsignedInt()
メソッドが含まれている java.lang
パッケージの Integer
クラスをインポートする必要があります。これは、ファイル内に次のコードを追加することで行えます。
import java.lang.Integer;
次に、parseUnsignedInt()
メソッドの使い方を学びましょう。このメソッドを文字列値に対して呼び出すと、それに相当する符号なしの 10 進整数オブジェクトが返されます。以下は例です。
String s = "123";
int n = Integer.parseUnsignedInt(s); //渡された文字列を符号なし整数に変換する
System.out.println(n);
このコードの出力は 123
になります。
parseUnsignedInt()
メソッドに無効な入力を与えると、NumberFormatException
がスローされます。この例外を try-catch
ブロックを使って処理することができます。以下は例です。
try {
String s = "-123";
int n = Integer.parseUnsignedInt(s); //渡された文字列を符号なし整数に変換する
System.out.println(n);
} catch(NumberFormatException ex) {
System.out.println("無効な入力です。");
}
このコードでは、負の整数を解析しようとしていますが、これは無効です。parseUnsignedInt()
メソッドは NumberFormatException
をスローし、それは catch
ブロックによってキャッチされます。このコードの出力は 無効な入力です。
になります。
コンソールから入力を読み取り、それを符号なし整数として解析することもできます。以下は例です。
Scanner scanner = new Scanner(System.in);
System.out.print("正の整数を入力してください:");
String s = scanner.nextLine();
try {
int n = Integer.parseUnsignedInt(s); //渡された文字列を符号なし整数に変換する
System.out.println(n);
} catch(NumberFormatException ex) {
System.out.println("無効な入力です。");
}
このコードでは、Scanner
クラスを使ってコンソールから入力を読み取っています。次に、parseUnsignedInt()
メソッドを使って入力文字列を符号なし整数として解析しています。最後に、入力を解析する際に発生する可能性のある例外をキャッチしています。
このコードをターミナルで実行するには、まず次のコマンドを使ってコンパイルする必要があります。
javac UnsignedIntegerParser.java
その後、次のコマンドを使って実行できます。
java UnsignedIntegerParser
文字列のリストから符号なし整数を解析することもできます。以下は例です。
List<String> stringList = Arrays.asList("123", "456", "789");
for (String s : stringList) {
try {
int n = Integer.parseUnsignedInt(s); //渡された文字列を符号なし整数に変換する
System.out.println(n);
} catch(NumberFormatException ex) {
System.out.println("無効な入力:" + s);
}
}
このコードでは、文字列のリストを反復処理し、parseUnsignedInt()
メソッドを使って各文字列を符号なし整数として解析しています。文字列が有効な符号なし整数でない場合、例外をキャッチしてエラーメッセージを表示します。
符号なし整数を解析するたびに同じ try-catch ブロックを繰り返すのを避けるために、文字列を入力として受け取り、符号なし整数を返すヘルパー関数を作成することができます。以下は例です。
public static int parseUnsignedInt(String s) {
try {
return Integer.parseUnsignedInt(s); //渡された文字列を符号なし整数に変換する
} catch(NumberFormatException ex) {
return -1; //無効な入力の場合は -1 を返す
}
}
このコードでは、文字列を入力として受け取り、符号なし整数を返すparseUnsignedInt()
関数を定義しています。入力が有効な符号なし整数でない場合、関数は -1 を返します。その後、この関数を使って例外を心配することなく符号なし整数を解析することができます。この関数の使い方の例を以下に示します。
String s = "123";
int n = parseUnsignedInt(s);
System.out.println(n); //出力:123
s = "-123";
n = parseUnsignedInt(s);
System.out.println(n); //出力:-1
より大きな符号なし整数を解析する必要がある場合、Integer
クラスの代わりに UnsignedInteger
クラスの parseUnsignedInt()
メソッドを使用できます。このメソッドは int
ではなく long
を返します。以下は例です。
String s = "4294967295"; //符号なし 32 ビット整数の最大値
long n = Long.parseUnsignedLong(s);
System.out.println(n); //出力:4294967295
10 以外の基数で表される数を表す文字列を解析したい場合、追加の 基数
パラメータを持つ parseInt()
メソッドを使用できます。以下は例です。
String s = "1101"; //13 の 2 進数表現
int n = Integer.parseUnsignedInt(s, 2); //2 進数として解析
System.out.println(n); //出力:13
Nano を終了するには、Ctrl+X
を押してから、ファイルを保存するために Y
を押し、その後 Enter
を押します。
端末でコードを実行するには、次のコマンドを使用してコンパイルできます。
javac UnsignedIntegerParser.java
その後、次のコマンドを使用して実行できます。
java UnsignedIntegerParser
この実験では、Java の parseUnsignedInt()
メソッドを使用して文字列を符号なしの 10 進整数として解析する方法を学びました。また、無効な入力を処理する方法、コンソールから入力を読み取る方法、文字列のリストから符号なし整数を解析する方法、およびヘルパー関数の使用方法も学びました。また、より大きな符号なし整数を解析する方法、基数を使用する方法、および端末でコードを実行する方法も学びました。