Java - 基本データ型の演算


■ページ目次

Top

■基本データ型の演算

Top

■算術演算子

Top
■(参考) ゼロ除算
Top
■実習
  1. 上記の"ArithmeticOperators01.java"を入力して、実行してください。
  2. つぎのアプリケーション"ArithmeticOperators02.java"を入力して、実行してください。
    1. public class ArithmeticOperators02 {
    2. public static void main(String[] args) {
    3. int i = 10000;
    4. int j = 1000000;
    5. int k;
    6. k = i / j * j;
    7. System.out.println("i / j * j = " + k);
    8. k = i * j / j;
    9. System.out.println("i * j / j = " + k);
    10. }
    11. }

    □ 実行結果

    $ java ArithmeticOperators02
    i / j * j = 0
    i * j / j = 1410
    
  3. 上記アプリケーション"ArithmeticOperators02.java"の実行結果は正しくありません。第2式(i * j / j)の結果が正しくなるように、アプリケーションを修正してください。("ArithmeticOperators03.java")
  4. □ 実行結果

    $ java ArithmeticOperators03
    i / j * j = 0
    i * j / j = 10000
    

  5. コマンドライン引数から体重(kg)と身長(m)を指定し、BMI を計算し表示するアプリケーション"Bmi01.java"を入力して、実行してください。BMI は 体重 / 身長2 です。
    1. public class Bmi01 {
    2. public static void main(String[] args) {
    3. double weight = Double.parseDouble(args[0]);
    4. double hight = Double.parseDouble(args[1]);
    5. //
    6. // ここにコードを記述してください。
    7. //
    8. }
    9. }

    □ 実行結果

    $ java Bmi01 60 1.7
    BMI = 20.761245674740486
    

  6. (オプション)
    上記の"Bmi01.java"を、体重(kg)と身長(cm)を指定するようにしてください。このとき、引数は、int 型とします。("Bmi02.java")
    1. public class Bmi02 {
    2. public static void main(String[] args) {
    3. int weight = Integer.parseInt(args[0]);
    4. int hight = Integer.parseInt(args[1]);
    5. //
    6. // ここにコードを記述してください。
    7. //
    8. }
    9. }

    □ 実行結果

    $ java Bmi02 60 170
    BMI = 20
    

  7. コマンドライン引数から double 型の値 2 つ (a, b とします) を受け取り、それをもとに、円の面積(a2 * 3.14)、三角形の面積(a * b / 2)、四角形の面積(a * b) を計算し表示するアプリケーション"Area01.java"を入力して、実行してください。
    1. public class Area01 {
    2. public static void main(String[] args) {
    3. double a = Double.parseDouble(args[0]);
    4. double b = Double.parseDouble(args[1]);
    5. //
    6. // ここにコードを記述してください。
    7. //
    8. }
    9. }

    □ 実行結果

    $ java Area01 10 20
    円の面積     = 314.0
    三角形の面積 = 100.0
    四角形の面積 = 200.0
    
    $ java Area01 1.1 2.2
    円の面積     = 3.7994000000000008
    三角形の面積 = 1.2100000000000002
    四角形の面積 = 2.4200000000000004
    

  8. (オプション)
    上記アプリケーション"Area01.java"で、計算を Math クラスの定数やメソッドを使うように修正してください。このとき、結果は四捨五入してください。("Area02.java")
    1. public class Area02 {
    2. public static void main(String[] args) {
    3. double a = Double.parseDouble(args[0]);
    4. double b = Double.parseDouble(args[1]);
    5. //
    6. // ここにコードを記述してください。
    7. //
    8. }
    9. }

    □ 実行結果

    $ java Area01 1.1 2.2
    円の面積     = 4
    三角形の面積 = 1
    四角形の面積 = 2
    

  9. (オプション)
    コマンドライン引数から double 型の値 2 つ (a, b とします) を受け取り、それをもとに、円周の長さ(2 * a * 3.14)、二等辺三角形の周の長さ(√(a2 + 4 * b) + a)、四角形の周の長さ(2 * (a + b)) を計算し表示するアプリケーション"Length01.java"を入力して、実行してください。なお、平行根を計算するメソッドは、Math クラスにあります。
    1. public class Length01 {
    2. public static void main(String[] args) {
    3. double a = Double.parseDouble(args[0]);
    4. double b = Double.parseDouble(args[1]);
    5. //
    6. // ここにコードを記述してください。
    7. //
    8. }
    9. }

    □ 実行結果

    $ java Length01 1 1
    円周の長さ       = 6.283185307179586
    三角形の周の長さ = 3.23606797749979
    四角形の周の長さ = 4.0
    
Top

■代入演算子

Top
■例題
  1. コマンドラインから入力した 2 つの整数を交換するアプリケーション"Exchange01.java"を入力して、実行してください。
    1. public class Exchange01 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0]); // コマンドラインからの引数をint型に変換します。
    4. int b = Integer.parseInt(args[1]); // コマンドラインからの引数をint型に変換します。
    5. int t = a; // 一時的な変数 t を交換用に使用
    6. a = b;
    7. b = t;
    8. System.out.println("引数を交換して表示: " + a + ", " + b);
    9. }
    10. }

    □ 実行結果

    $ java Exchange01 2 5
    引数を交換して表示: 5, 2
    
    $ java Exchange01 2 -5
    引数を交換して表示: -5, 2
    
Top

■インクリメント・デクリメント演算子

Top
■実習
  1. 上記の"Increment.java"を入力して、実行してください。
  2. (オプション)
    上記アプリケーションのインクリメント演算子をデクリメント演算子にして実行してみてください。("Decrement.java")

Top

■関係演算子(比較演算子)

Top
■実習
  1. 上記の"RelationalOperators.java"を入力して、実行してください。
  2. コマンドラインから指定した整数値が偶数のとき、"true"を、奇数のとき"false"をプリントするアプリケーション"EvenOdd01.java"を作成してください。
    1. public class EvenOdd01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. System.out.println( /* ここにコードを記述してください */);
    5. }
    6. }

    □ 実行結果

    $ java EvenOdd01 4
    true
    
    $ java OddEven01 5
    false
    

Top

■論理演算子

Top
■例題
  1. コマンドラインから指定した整数値が0から100の範囲内のとき、"true"を、そうでなければ"false"をプリントするアプリケーション"Range01.java"を作成してください。
    1. public class Range01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. System.out.println(n >= 0 && n <= 100);
    5. }
    6. }

    □ 実行結果

    $ java Range01 -1
    false
    
    $ java Range01 20
    true
    
    $ java Range01 1000
    false
    
Top
■実習
  1. サンプル・アプリケーション"Range01.java"の "true" / "false" の表示を逆にしてください。これは、2とおりの方法を使ってください。("Range011.java")
    1. public class Range011 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]); // コマンドラインからの引数をint型に変換します。
    4. System.out.println(" 例題: " + (n >= 0 && n <= 100));
    5. // ここにコードを記述してください。
    6. }
    7. }

    □ 実行結果

    $ java Range01 -1
         例題: false
     ! を利用: true
    || を利用: true
    
    $ java Range01 20
         例題: true
     ! を利用: false
    || を利用: false
    
    $ java Range01 1000
         例題: false
     ! を利用: true
    || を利用: true
    
  2. コマンドラインから入力した西暦年がうるう年か否かを判定するアプリケーション"LeapYear21.java"を作成してください。
    なお、複数のif文を使用してかまいません。 西暦年がつぎの条件を満たす場合、うるう年になります。 テストにはつぎの年を使用してください。
    1. public class LeapYear21 {
    2. public static void main(String[] args) {
    3. int year = Integer.parseInt(args[0]);
    4. // ここにコードを記述してください。
    5. }
    6. }

    □ 実行結果

    $ java LeapYear21 2004
    true
    
  3. コマンドラインから入力した 2 つの整数値の差が 10 以内であれば true を、そうでなければ false を表示するアプリケーション"Range21.java"を作成してください。
    1. public class Range21 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0]);
    4. int b = Integer.parseInt(args[1]);
    5. // ここにコードを記述してください。
    6. }
    7. }

    □ 実行結果

    $ java Range21 10 20
    true
    
  4. コマンドラインから入力した 3 つの正整数値を、3 角形の各辺の長さと考えて、その 3 つの値で三角形ができるとき true を、そうでなければ false を表示するアプリケーション"Triangle21.java"を作成してください。
    1. public class Triangle21 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0]);
    4. int b = Integer.parseInt(args[1]);
    5. int c = Integer.parseInt(args[2]);
    6. // ここにコードを記述してください。
    7. }
    8. }

    □ 実行結果

    $ java Triangle21 2 3 4
    true
    
Top

■ビット演算子

Top
■例題
  1. コマンドラインから入力した 2 つの整数を交換するアプリケーション"Exchange01.java"で、一時的な変数を使わずに、交換してください。("Exchange11.java")
    1. public class Exchange11 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0]); // コマンドラインからの引数をint型に変換します。
    4. int b = Integer.parseInt(args[1]); // コマンドラインからの引数をint型に変換します。
    5. a ^= b;
    6. b ^= a;
    7. a ^= b;
    8. System.out.println("引数を交換して表示: " + a + ", " + b);
    9. }
    10. }

    □ 実行結果

    $ java Exchange11 2 5
    引数を交換して表示: 5, 2
    
    $ java Exchange11 2 -5
    引数を交換して表示: -5, 2
    
  2. コマンドラインから入力した 16 進数のビット 8 に対して、ON、OFF、NOT するアプリケーション"BitOperators02.java"を作成、実行してください。
    1. public class BitOperators02 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0], 16);
    4. int onMask = 0x00000100; // 00000000 00000000 00000001 00000000
    5. int offMask = 0xFFFFFEFF; // 11111111 11111111 11111110 11111111
    6. int notMask = 0x00000100; // 00000000 00000000 00000001 00000000
    7. System.out.println(" args = " + Integer.toBinaryString(a));
    8. System.out.println("bit 8 on = " + Integer.toBinaryString(a | onMask));
    9. System.out.println("bit 8 off = " + Integer.toBinaryString(a & offMask));
    10. System.out.println("bit 8 not = " + Integer.toBinaryString(a ^ notMask));
    11. }
    12. }

    □ 実行結果

    $ java BitOperators02 ffff
         args = 1111111111111111
    bit 8 on  = 1111111111111111
    bit 8 off = 1111111011111111
    bit 8 not = 1111111011111111
    
    $ java BitOperators02 f0000
         args = 11110000000000000000
    bit 8 on  = 11110000000100000000
    bit 8 off = 11110000000000000000
    bit 8 not = 11110000000100000000
    
  3. コマンドラインから入力した 16 進数のビット 8 に対して、ON のとき、true、OFF のとき、false を表示するアプリケーション"BitOperators03.java"を作成、実行してください。
    1. public class BitOperators03 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0], 16);
    4. int onMask = 0x00000100; // 00000000 00000000 00000001 00000000
    5. System.out.println(" args = " + Integer.toBinaryString(a));
    6. System.out.println("bit 8 is on : " + ((a & onMask) != 0));
    7. }
    8. }

    □ 実行結果

    $ java BitOperators03 ffff
         args = 1111111111111111
    bit 8 is on : true
    
    $ java BitOperators03 f000
         args = 11110000000000000000
    bit 8 is on : false
    
Top
■実習
  1. 上記の"BitOperators.java"を入力して、実行してください。
Top

■シフト演算子

Top
■実習
  1. 上記の"ShiftOperators.java"を入力して、実行してください。
  2. コマンドラインから入力した16進数のビットに対して、コマンドラインから入力したビット位置を、ON、OFF、NOTするアプリケーション"ShiftOperators02.java"を作成、実行してください。
    1. public class ShiftOperators02 {
    2. public static void main(String[] args) {
    3. int a = Integer.parseInt(args[0], 16);
    4. int n = Integer.parseInt(args[1]);
    5. int onMask = 0x00000001; // 00000000 00000000 00000000 00000001
    6. int offMask = 0x00000001; // 00000000 00000000 00000000 00000001
    7. int notMask = 0x00000001; // 00000000 00000000 00000000 00000001
    8. System.out.println(" args = " + Integer.toBinaryString(a));
    9. System.out.println("bit 8 on = " + Integer.toBinaryString(a | onMask << n));
    10. System.out.println("bit 8 off = " + Integer.toBinaryString(a & ~(offMask << n)));
    11. System.out.println("bit 8 not = " + Integer.toBinaryString(a ^ notMask << n));
    12. }
    13. }

    □ 実行結果

    $ java ShiftOperators02 ffff 8
         args = 1111111111111111
    bit 8 on  = 1111111111111111
    bit 8 off = 1111111011111111
    bit 8 not = 1111111011111111
    
    $ java ShiftOperators02 f000 8
         args = 1111000000000000
    bit 8 on  = 1111000100000000
    bit 8 off = 1111000000000000
    bit 8 not = 1111000100000000
    
Top

■その他の演算子

Top
■条件演算子(3項演算子)
Top
■実習
  1. 上記の"Signeture01.java"を入力して、実行してください。
  2. (オプション)
    上記の"Signeture01.java"をつぎのように改良して、実行してください。("Signeture02.java")
  3. □ 実行結果

    $ java Signeture02 123
    Signeture 123 is 1
    
    $ java Signeture02 0
    Signeture 0 is 0
    
    $ java Signeture02 -987
    Signeture -987 is -1
    
Top

■演算の順序

Top

inserted by FC2 system