新・明解 Java 入門 演習 7-30, 7-31, 7-32, 7-33 解答
Hello, Terminal!swaponQです!
今回は演習 7-30, 7-31, 7-32, 7-33 に取り組んでいこうと思います。
- 演習 7-30
二つのint型整数a,bの最小値、三つのint型整数a,b,cの最小値、配列aの要素の最小値を求める多重定義されたメソッド群を作成せよ。
class ex07_30 { static int min(int a, int b) { int min = a; if(a > b) min = b; return min; } static int min(int a, int b, int c) { int min = a; if (b < min) min = b; if (c < min) min = c; return min; } static int min(int[] a) { int min = a[0]; for(int i =1; i<a.length;i++) if (a[i] < min) min = a[i]; return min; } public static void main(String[] args) { int a = 3; int b = 6; // 二値の最小値 System.out.println("x, yの最小値は" + min(a,b) + "です。"); int x = 1; int y = 0; int z = -1; // 三値の最小値 System.out.println("x, y, zの最小値は" + min(x, y, z) + "です。"); int[] array = {2,4,6,8,0}; // 配列の最小値 System.out.println("配列arrayの最小値は" + min(array) + "です。"); } }
・実行結果
x, yの最小値は3です。 x, y, zの最小値は-1です。 配列arrayの最小値は0です。
- 演習 7-31
int型整数xの絶対値、long型整数xの絶対値、float型実数xの絶対値、double型実数xの絶対値を求める、多重定義されたメソッド群を作成せよ。
class ex07_31 { static int absolute(int x){ if(x<0) x = -x; return x; } static long absolute(long x){ if(x<0) x = -x; return x; } static float absolute(float x){ if(x<0) x = -x; return x; } static double absolute(double x){ if(x<0) x = -x; return x; } public static void main(String[] args){ int i = 3; long l = -7; float f = 0; double d = -5.21; System.out.println("int型の絶対値:" + absolute(i)); System.out.println("long型の絶対値:" + absolute(l)); System.out.println("float型の絶対値:" + absolute(f)); System.out.println("double型の絶対値:" + absolute(d)); } }
・実行結果
int型の絶対値:3 long型の絶対値:7 float型の絶対値:0.0 double型の絶対値:5.21
- 演習 7-32
List7-12のメソッドprintBitsはint型整数値の内部ビットを表示するものであった。他の整数型に対しても同様の働きを行う、多重定義されたメソッド群を作成せよ。
import java.util.Scanner; class ex07_32 { //--- byte型のビット構成を表示 ---// static void printBits(byte x) { for (int i = 31; i >= 0; i--) System.out.print(((x >>> i & 1) == 1) ? '1' : '0'); System.out.printf("\nbyte型\n"); } //--- short型のビット構成を表示 ---// static void printBits(short x) { for (int i = 31; i >= 0; i--) System.out.print(((x >>> i & 1) == 1) ? '1' : '0'); System.out.printf("\nshort型\n"); } //--- int型のビット構成を表示 ---// static void printBits(int x) { for (int i = 31; i >= 0; i--) System.out.print(((x >>> i & 1) == 1) ? '1' : '0'); System.out.printf("\nint型\n"); } //--- long型のビット構成を表示 ---// static void printBits(long x) { for (int i = 31; i >= 0; i--) System.out.print(((x >>> i & 1) == 1) ? '1' : '0'); System.out.printf("\nlong型\n"); } public static void main(String[] args) { int a = 7; printBits(a); } }
・実行結果
00000000000000000000000000000111 int型
- 演習 7-33
int型の1次元配列とint型の2次元配列の全要素の値を表示する、多重定義されたメソッド群を作成せよ。
class ex07_33 { static void printArray(int[] a) { for(int i=0; i<a.length;i++) System.out.print(a[i] + " "); System.out.println(); } static int max(int[][] a) { int max = a[0][0]; for(int i = 0; i<a.length;i++) { for(int j = 0; j<a[i].length;j++) { if (a[i][j] > max) max = a[i][j]; } } return max; } static void printArray(int[][] a) { int t = max(a); int s = 2; do { t /= 10; s++; } while (t > 10); String ds = "%"+s+"d"; for (int i = 0; i<a.length;i++) { for (int j = 0;j<a[i].length;j++) { System.out.printf(ds,a[i][j]); } System.out.println(); } } public static void main(String[] args) { int[] x = {3,-304,3298573,43,5}; printArray(x); int[][] x2 = { {2,54,3,63}, {494534,4,-43,3}, {4931910,3} }; printArray(x2); } }
・実行結果
3 -304 3298573 43 5 2 54 3 63 494534 4 -43 3 4931910 3
今回で「第7章:メソッド」は終了です。長い戦いでしたがお疲れ様でした!
次回からは「第8章:クラスの基本」に入ります。
Goodbye, Terminal… swaponQでした!