はじめに
この実験では、JavaのtoHexString()
メソッドの使い方を学びます。このメソッドは、符号なしのlong型として渡された値の16進数相当を返します。toHexString()
メソッドの使い方、そのパラメータ、および戻り値の型について学びます。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、JavaのtoHexString()
メソッドの使い方を学びます。このメソッドは、符号なしのlong型として渡された値の16進数相当を返します。toHexString()
メソッドの使い方、そのパラメータ、および戻り値の型について学びます。
ターミナルを開き、次のコマンドを使ってLongToHexadecimal
という名前の新しいJavaクラスを作成します。
touch LongToHexadecimal.java
LongToHexadecimal.java
ファイルをテキストエディタで開きます。
次のコードを貼り付けてメインメソッドを定義します。
public class LongToHexadecimal {
public static void main(String[] args){
// ここにコードを記述します
}
}
次に、toHexString()
メソッドを使って正のlong型を16進数に変換します。
main
メソッドの中に次のコードを追加して、long型の値60L
をその16進数に相当するものに変換します。
long i = 60L;
System.out.println("Actual number is = " + i);
System.out.println("Hexadecimal equivalent is = " + Long.toHexString(i)); //16進数の基数16でのlong型の値を文字列として返す
次のコマンドを使ってターミナルでプログラムをコンパイルして実行します。
javac LongToHexadecimal.java && java LongToHexadecimal
次の出力が表示されるはずです。
Actual number is = 60
Hexadecimal equivalent is = 3c
次に、toHexString()
メソッドを使って負のlong型を16進数に変換します。
main
メソッドの中に次のコードを追加して、long型の値-52L
をその16進数に相当するものに変換します。
long j = -52L;
System.out.println("Actual number is = " + j);
System.out.println("Hexadecimal equivalent is = " + Long.toHexString(j)); //16進数の基数16でのlong型の値を文字列として返す
次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。
javac LongToHexadecimal.java && java LongToHexadecimal
次の出力が表示されるはずです。
Actual number is = -52
Hexadecimal equivalent is = ffffffffffffffcc
次に、プログラムを修正してユーザーからの入力を受け取るようにします。
main
メソッドの中に次のコードを追加して、ユーザーからのlong型の入力を読み取り、それを16進数に相当するものに変換します。
Scanner sc = new Scanner(System.in);
System.out.print("Enter the Number = ");
long k = sc.nextLong();
System.out.println("Actual Number is = " + k);
System.out.println("Hexadecimal representation is = " + Long.toHexString(k)); //16進数の基数16でのlong型の値を文字列として返す
次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。
javac LongToHexadecimal.java && java LongToHexadecimal
次のような出力が表示されるはずです。
Enter the Number = 585
Actual Number is = 585
Hexadecimal representation is = 249
次に、無効な入力を処理するコードを追加します。
main
メソッド内の既存のコードを変更して、入力例外をキャッチするようにします。
Scanner sc = new Scanner(System.in);
try {
System.out.print("Enter the Number = ");
long k = sc.nextLong();
System.out.println("Actual Number is = " + k);
System.out.println("Hexadecimal representation is = " + Long.toHexString(k)); //16進数の基数16でのlong型の値を文字列として返す
} catch (InputMismatchException ex) {
System.out.println("Invalid input! Please enter a valid long value.");
}
次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。
javac LongToHexadecimal.java && java LongToHexadecimal
次のような出力が表示されるはずです。
Enter the Number = abc
Invalid input! Please enter a valid long value.
次に、ユーザーがプログラムを終了するまで、ユーザーからの入力を受け付けるようにプログラムを修正します。
main
メソッドの中に次のコードを追加して、ユーザーが終了するまでプログラムを実行し続けます。
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("Enter the Number (or -1 to quit) = ");
long k = sc.nextLong();
if (k == -1) {
System.out.println("Goodbye!");
break;
}
System.out.println("Actual Number is = " + k);
System.out.println("Hexadecimal representation is = " + Long.toHexString(k)); //16進数の基数16でのlong型の値を文字列として返す
}
次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。
javac LongToHexadecimal.java && java LongToHexadecimal
次のような出力が表示されるはずです。
Enter the Number (or -1 to quit) = 456
Actual Number is = 456
Hexadecimal representation is = 1c8
Enter the Number (or -1 to quit) = -999
Actual Number is = -999
Hexadecimal representation is = fffffffffffffc19
Enter the Number (or -1 to quit) = 754
Actual Number is = 754
Hexadecimal representation is = 2f2
Enter the Number (or -1 to quit) = -1
Goodbye!
最後に、入力数がlong型で表現できる最大値と最小値であるエッジケースをテストします。
main
メソッドのwhile
ループの中に次のコードを追加します。
System.out.println("Actual Number is = " + Long.MAX_VALUE);
System.out.println("Hexadecimal representation is = " + Long.toHexString(Long.MAX_VALUE)); //16進数の基数16でのlong型の値を文字列として返す
System.out.println("Actual Number is = " + Long.MIN_VALUE);
System.out.println("Hexadecimal representation is = " + Long.toHexString(Long.MIN_VALUE)); //16進数の基数16でのlong型の値を文字列として返す
次のコマンドを使ってターミナルで再度プログラムをコンパイルして実行します。
javac LongToHexadecimal.java && java LongToHexadecimal
次のような出力が表示されるはずです。
Enter the Number (or -1 to quit) = 9223372036854775807
Actual Number is = 9223372036854775807
Hexadecimal representation is = 7fffffffffffffff
Actual Number is = -9223372036854775808
Hexadecimal representation is = 8000000000000000
Enter the Number (or -1 to quit) = -1
Goodbye!
この実験では、JavaのtoHexString()
メソッドを使ってlong型の値を16進数に変換する方法を学びました。ユーザーからの入力の読み取り、ユーザー入力例外の処理、およびユーザーが明示的に終了するまでプログラムを実行し続けるためのループの使用を練習しました。これらのプログラミング概念を使って、long型の値を操作しユーザー入力を受け付けるより複雑なJavaアプリケーションを構築することができます。