/** * ドメイン非依存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); 003 演算子 | Javaドリル https://minner.asia 楽々学べるJavaの問題集 Fri, 05 Sep 2025 02:33:00 +0000 ja hourly 1 https://wordpress.org/?v=6.8.3 https://minner.asia/wp-content/uploads/2023/10/cropped-logo-32x32.png 003 演算子 | Javaドリル https://minner.asia 32 32 003 演算子(ビット演算子) 029 解答例 https://minner.asia/archives/862 https://minner.asia/archives/862#respond Thu, 26 Oct 2023 22:16:22 +0000 http://localhost/?p=862
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("整数を入力してください: ");
        
        try {
            int userInput = scanner.nextInt();
            byte result = (byte) userInput;
            
            if (userInput == result) {
                System.out.println("オーバーフローまたはアンダーフローは発生しません。");
                System.out.println("変換後のバイト値: " + result);
            } else {
                System.out.println("オーバーフローまたはアンダーフローが発生しました。");
            }
        } catch (java.util.InputMismatchException e) {
            System.out.println("無効な入力です。整数を入力してください。");
        } finally {
            scanner.close();
        }
    }
}

このプログラムでは、ユーザーから整数を入力し、byte 型にキャストします。その後、オリジナルの整数とキャスト後の値を比較して、オーバーフローまたはアンダーフローが発生したかどうかを確認します。例外処理を使用して、無効な入力やエラー処理も行っています。

オーバーフローとアンダーフロー

「オーバーフロー(Overflow)」と「アンダーフロー(Underflow)」は、主に数値型(整数型や浮動小数点型)のデータが特定の範囲を超えたり未満になったりした場合に発生する問題です。以下にそれぞれの説明と具体的な例を示します。

オーバーフロー(Overflow):

オーバーフローは、数値がそのデータ型で表現可能な最大値を超える場合に発生します。整数型や浮動小数点型の最大値を超えた場合、数値はラップアラウンドし、負の最小値から再び始まることがあります。
オーバーフローはプログラムの実行時に意図しない振る舞いを引き起こす可能性があり、バグの原因となることがあります。
例(整数型のオーバーフロー):

int maxInt = Integer.MAX_VALUE; // int型の最大値
int overflowedValue = maxInt + 1; // オーバーフローが発生
System.out.println("Overflowed Value: " + overflowedValue);

上記の例では、maxInt は Integer.MAX_VALUE で表現可能な最大値です。しかし、それより1大きな値を加算することでオーバーフローが発生し、負の最小値に戻ります。

アンダーフロー(Underflow):

アンダーフローは、数値がそのデータ型で表現可能な最小値を下回る場合に発生します。主に浮動小数点型の場合に見られ、最小正の値を下回ることで正の無限大またはゼロに近い非常に小さな値に近づくことがあります。
アンダーフローもオーバーフローと同様に、プログラムの実行時に問題を引き起こす可能性があります。
例(浮動小数点型のアンダーフロー):

float minFloat = Float.MIN_VALUE; // float型の最小正の値
float underflowedValue = minFloat / 2; // アンダーフローが発生
System.out.println("Underflowed Value: " + underflowedValue);

上記の例では、minFloat は Float.MIN_VALUE で表現可能な最小正の浮動小数点値です。しかし、それを2で割ることでアンダーフローが発生し、非常に小さな値に近づきます。

プログラミングにおいては、オーバーフローとアンダーフローに対する適切なハンドリングが必要です。適切なデータ型を選択し、データの境界値に注意して計算を行うことが大切です。特に、整数や浮動小数点数の境界値を超えないように注意してプログラムを設計することが良いプラクティスです。

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/862/feed 0
003 演算子(ビット演算子) 029 問題 https://minner.asia/archives/859 https://minner.asia/archives/859#respond Thu, 26 Oct 2023 22:12:20 +0000 http://localhost/?p=859

問題

ユーザーに整数を入力させ、その整数をバイト型(byte)にキャストし、オーバーフローまたはアンダーフローが発生するかどうかを確認し、結果を表示するプログラムを書いてください。

ヒント

  1. Scannerを使ってユーザーから整数を入力するためのScannerオブジェクトを作成します。
  2. ユーザーに整数を入力するように促し、入力値を読み取ります。
  3. 読み取った整数をbyte型にキャストします。
  4. キャスト前後の値が等しいかどうかを比較して、オーバーフローまたはアンダーフローが発生したかどうかを確認します。
  5. 結果を表示します。

「オーバーフロー」「アンダーフロー」とは

「オーバーフロー(Overflow)」と「アンダーフロー(Underflow)」は、主に数値型(整数型や浮動小数点型)のデータが特定の範囲を超えたり未満になったりした場合に発生する問題です。
詳しい解説は「解答例」で。

→解答例

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/859/feed 0
003 演算子(ビット演算子) 028 解答例 https://minner.asia/archives/854 https://minner.asia/archives/854#respond Thu, 26 Oct 2023 21:57:05 +0000 http://localhost/?p=854
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // スキャナーを作成してユーザーからの入力を受け取る
        Scanner scanner = new Scanner(System.in);

        System.out.print("小数を入力してください: ");
        double decimalNumber = scanner.nextDouble(); // ユーザーから小数を入力

        // 小数点以下を切り捨てて整数に変換
        int integerNumber = (int) decimalNumber;

        // 結果を表示
        System.out.println("整数に変換した結果: " + integerNumber);

        // スキャナーをクローズ
        scanner.close();
    }
}

このプログラムでは、double 型の小数 decimalNumber を整数型にキャストして、小数点以下を切り捨てた結果を整数 integerNumber に格納し、最終的な結果を表示します。

浮動小数点型の小数点以下を切り捨てて整数に変換する

浮動小数点型(例: double や float)の数値から小数点以下を切り捨てて整数に変換するには、キャスト演算子を使用します。キャスト演算子は、指定したデータ型に数値を変換するために使用されます。

以下は、浮動小数点型の数値から小数点以下を切り捨てて整数に変換する手順の解説です。

  1. キャスト演算子 (int) を使用して、浮動小数点型の数値を整数に変換します。キャスト演算子は変換したいデータ型をカッコ内に指定します。例えば、(int) は整数型に変換することを示します。
  2. キャスト演算子を使用して変換された値は、小数点以下が切り捨てられ、整数部分だけが残ります。

以下は、Javaでの例です:

double decimalNumber = 12.345; // 浮動小数点型の数値
int integerNumber = (int) decimalNumber; // 小数点以下を切り捨てて整数に変換
System.out.println("整数に変換した結果: " + integerNumber);

このコードでは、decimalNumber の値が小数点以下の数値を含んでいますが、キャスト演算子 (int) を使用して整数に変換することで、小数点以下が切り捨てられて整数として扱われます。結果として、integerNumber には 12 という整数が格納されます。

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/854/feed 0
003 演算子(ビット演算子) 028 問題 https://minner.asia/archives/852 https://minner.asia/archives/852#respond Thu, 26 Oct 2023 21:53:56 +0000 http://localhost/?p=852

問題

ユーザーに小数を入力させ、その値を整数に変換して表示するプログラムを書いてください。ただし、小数点以下は切り捨てる必要があります。

ヒント

  1. ユーザーからの入力を受け取ります。
  2. 受け取った小数を整数に変換します。小数点以下の部分を切り捨てるために、整数型へのキャストを使用します。
  3. 変換後の整数を表示します。

→解答例

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/852/feed 0
003 演算子(ビット演算子) 027 解答例 https://minner.asia/archives/847 https://minner.asia/archives/847#respond Thu, 26 Oct 2023 21:51:37 +0000 http://localhost/?p=847
import java.util.Scanner;

public class IntegerResult {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // ユーザーから整数を入力
        System.out.print("整数を入力してください: ");
        int integerValue = scanner.nextInt();

        // ユーザーから小数を入力
        System.out.print("小数を入力してください: ");
        double doubleValue = scanner.nextDouble();

        // 小数を整数に明示的にキャストし、小数部分を切り捨てる
        int result = integerValue + (int) doubleValue;

        // 結果を整数として表示
        System.out.println("結果: " + result);

        scanner.close();
    }
}

このプログラムでは、doubleValue を int に明示的にキャストして、小数部分を切り捨てています。その後、整数としての結果を表示します。

浮動小数点型を整数にキャストして他の整数と計算

浮動小数点型を整数にキャストして他の整数と計算するプロセスについて説明します。

  1. 浮動小数点型(例: double)を整数型(例: int)にキャスト: 最初に、浮動小数点型の値を整数型に明示的にキャストします。この操作により、小数点以下の部分は切り捨てられ、整数部分だけが保持されます。例えば、double の値 3.75 を int にキャストすると、小数点以下の .75 は切り捨てられ、整数 3 になります。
  2. 整数同士の演算: これから得られた整数値を他の整数と演算(たとえば加算や減算)することができます。この演算は、整数同士の計算と同様に行われます。

例として、以下のコードを考えてみましょう:

double doubleValue = 5.75;
int intValue = (int) doubleValue; // doubleをintにキャスト

int result = intValue + 10; // 整数同士の加算

このコードでは、doubleValue の値 5.75 が intValue にキャストされ、小数部分 .75 は切り捨てられて整数 5 になります。その後、intValue と 10 を加算して、result に整数としての結果が格納されます。

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/847/feed 0
003 演算子(ビット演算子) 027 問題 https://minner.asia/archives/845 https://minner.asia/archives/845#respond Thu, 26 Oct 2023 21:48:25 +0000 http://localhost/?p=845

問題

ユーザーに整数と小数を入力させ、これらの値を足し算して結果を表示するプログラムを書いてください。ただし、結果は整数として表示する必要があります。明示的な型変換を使用してください。

ヒント

  1. ユーザーから整数と小数の入力を受け取ります。
  2. 受け取った整数と小数をそれぞれ変数に保存します。
  3. 小数を整数に変換します。これは明示的な型変換を行うことになります。
  4. 整数と小数を足し算します。
  5. 足し算の結果を整数として表示します。

→解答例

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/845/feed 0
003 演算子(ビット演算子) 026 解答例 https://minner.asia/archives/841 https://minner.asia/archives/841#respond Thu, 26 Oct 2023 21:44:59 +0000 http://localhost/?p=841
public class DoubleToIntConversion {
    public static void main(String[] args) {
        // ダブル型の変数を用意し、値を代入
        double doubleValue = 3.14159;

        // ダブル型を整数型にキャストし、小数点以下を切り捨てて整数部分を取得
        int intValue = (int) doubleValue;

        // 整数部分を表示
        System.out.println("整数部分: " + intValue);
    }
}

このプログラムでは、まずダブル型の変数 doubleValue に3.14159を代入し、それを整数型にキャストして intValue に代入します。ダブル型を整数型にキャストすることで、小数点以下が切り捨てられ、整数部分が取得されます。最終的に、整数部分を表示します。

浮動少数型から整数へのキャスト

浮動小数点型(浮動少数型)から整数へのキャストは、浮動小数点数を整数に変換する操作です。この操作によって、小数点以下の情報は切り捨てられ、整数部分だけが残ります。Javaでは、このキャスト操作を行うためにキャスト演算子 (int) を使用します。

以下は、浮動小数点型から整数へのキャストの基本的な手順と例です:

  1. 浮動小数点型の変数を用意し、値を代入します。
  2. キャスト演算子 (int) を使用して、浮動小数点型を整数型にキャストします。この操作によって小数点以下は切り捨てられます。
  3. キャストした整数型の値を変数に代入するか、直接使用します。

以下は、具体的な例です:

public class FloatToIntegerCasting {
    public static void main(String[] args) {
        // 浮動小数点型の変数を用意し、値を代入
        double floatValue = 3.14159;

        // 浮動小数点型を整数型にキャストし、小数点以下を切り捨てて整数部分を取得
        int intValue = (int) floatValue;

        // 整数部分を表示
        System.out.println("整数部分: " + intValue);
    }
}

このプログラムでは、3.14159という浮動小数点型の値を整数型にキャストして、整数部分(3)を取得しています。キャスト演算子 (int) によって、小数点以下が切り捨てられた結果が得られます。

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/841/feed 0
003 演算子(ビット演算子) 026 問題 https://minner.asia/archives/839 https://minner.asia/archives/839#respond Thu, 26 Oct 2023 21:41:39 +0000 http://localhost/?p=839

問題

ダブル型(double)の変数を整数型(int)にキャストし、小数点以下を切り捨てて整数部分を表示するプログラムを書いてください。

ヒント

  1. ダブル型の変数を用意し、値を代入します。
  2. キャスト演算子を使用して、ダブル型を整数型にキャストします。この際、小数点以下は切り捨てられます。
  3. キャストした整数型の値を表示します。

→解答例

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/839/feed 0
003 演算子(ビット演算子) 025 解答例 https://minner.asia/archives/834 https://minner.asia/archives/834#respond Thu, 26 Oct 2023 21:36:09 +0000 http://localhost/?p=834
import java.util.Scanner;

public class BitShiftExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 整数の入力
        System.out.print("整数を入力してください: ");
        int number = scanner.nextInt();

        // シフトするビット数の入力
        System.out.print("シフトするビット数を入力してください: ");
        int shiftAmount = scanner.nextInt();

        // ビットシフト演算を実行
        int shiftedResult = number << shiftAmount;

        // 結果を表示
        System.out.println("シフト結果: " + shiftedResult);

        scanner.close();
    }
}

このプログラムは、ユーザーから整数とシフトするビット数を受け取り、左シフト演算子 << を使用して整数を指定されたビット数だけ左にシフトします。そして、結果を表示します。ユーザーが入力した整数を指定されたビット数だけ左にシフトすることで、ビットが左に移動し、整数の値が変化します。

ビットシフト

「ビットシフト」とは、主にビット単位でのデータの移動や操作を指すプログラミング用語です。シフト操作は、ビット列内のビット(0または1)を指定された方向に移動させることを意味します。

主なシフト操作には、左シフト(ビットを左に移動)と右シフト(ビットを右に移動)の2つがあります。

  1. 左シフト(Left Shift):
    • 左シフト演算子は通常 << で表されます。
    • 整数を指定されたビット数だけ左に移動させ、新たに空白で埋められたビットは0になります。
    • 左シフトによって数値は2のべき乗倍に増加します。たとえば、整数1ã‚’1ビット左にシフトすると2になります。
  2. 右シフト(Right Shift):
    • 右シフト演算子は通常 >> で表されます。
    • 整数を指定されたビット数だけ右に移動させます。新たに空白で埋められるビットの値は、通常、元の最上位ビット(最左端のビット)の値と同じです。
    • 右シフトによって数値は2のべき乗で割られます。たとえば、整数4ã‚’1ビット右にシフトすると2になります。

ビットシフトは、主に以下のような用途で使用されます:

  • 整数の2進数表現を操作し、ビットマスクを生成するため。
  • 2進数表現の値を倍増または半分にするため。
  • ハードウェア制御やデータ圧縮アルゴリズムで使用されるビット操作を実行するため。

ビットシフトは、プログラム内でビットレベルの操作を行う際に非常に有用で、効率的なアルゴリズムの実装に役立ちます。 Javaや他のプログラミング言語では、ビットシフト演算子を使用してビットシフトを実行できます。

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

]]>
https://minner.asia/archives/834/feed 0
003 演算子(ビット演算子) 025 問題 https://minner.asia/archives/832 https://minner.asia/archives/832#respond Thu, 26 Oct 2023 21:33:53 +0000 http://localhost/?p=832

問題

ユーザーに整数とシフトするビット数を入力させ、整数のビットを指定されたビット数だけ左にシフトし、結果を表示するプログラムを書いてください。

ヒント

  1. ユーザーから整数とシフトするビット数を入力するために、Scannerクラスを使用します。
  2. ビットシフト演算子 << を使用して、整数を指定されたビット数だけ左にシフトします。
  3. 結果を表示します。

シフトとは

ビットシフト(Shift)は、コンピュータプログラミングにおいて、整数のビット(2進数表現の0と1)を指定された数だけ左または右に移動させる操作です。ビットシフトはビット単位の操作であり、整数の値を変更する方法の一つです。

ビットシフトは、データの圧縮、暗号化、ビットフィールドからのビットの取り出し、ビットマスクの生成など、さまざまなコンピュータアルゴリズムやデータ操作で使用されます。特に、ビットフラグを管理する際に非常に有用です。ビットシフト演算子は、プログラム内でビットレベルの操作を行う際に使用されます。

→解答例

「003 演算子」問題集リスト

🎯 実習で理解を深めよう

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

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