Thinking in Java - Fourth Edition 章節練習個人解答——第4章

 注:本練習題答案繫個人閱讀後所作解答,非原書所配答案。(由於水平有限,文中出現錯誤還望諒解與指正)

 

文中所有源代碼皆在Eclipse-jee-indigo-3.7,Java SE 6平臺下測試運行。


 

練習1:

package lib.fourth;

public class Exercise_1 {
	public static void main(String[] args) {
		for(int i = 1; i <= 100; i++) {
			System.out.print((i < 10) ? i + "  " : i + " ");
			if(i % 20 == 0)
				System.out.println();			
		}
	}
} /* Output:
1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 
*///:~


練習2:

package lib.fourth;

public class Exercise_2 {
	public static void main(String[] args) {
		int a = (int)(Math.random() * 100);
		int b = (int)(Math.random() * 100);
		System.out.print(a);
		for(int i = 1; i < 25; i++) {
			if(a > b) 
				System.out.print(">" + b);
			else if(a < b)
				System.out.print("<" + b);
			else
				System.out.print("=" + b);
			a = b;
			b = (int)(Math.random() * 100);
		}			
	}
} /* (Execute to see output) *///:~


練習3:

package lib.fourth;

public class Exercise_3 {
	public static void main(String[] args) {
		int a = (int)(Math.random() * 100);
		int b = (int)(Math.random() * 100);
		System.out.print(a);
		while(true) {
			if(a > b) 
				System.out.print(">" + b);
			else if(a < b)
				System.out.print("<" + b);
			else
				System.out.print("=" + b);
			a = b;
			b = (int)(Math.random() * 100);
		}
	}
} /* (Execute to see output, 
In the need to press "Ctrl-C" interrupt) 
*///:~


練習4:

package lib.fourth;

public class Exercise_4 {
	public static void main(String[] args) {
		for(int i = 3; i < 100; i++) {
			for(int j = 2; j < i; ) {
				if(i % j != 0) {
					if(i == j + 1)
						System.out.print(i + " ");
					j++;
				}
				else 
					break;				
			}
		}
	}
} /* Output:
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 
*///:~


練習5:

package lib.fourth;

import java.util.ArrayList;

public class Exercise_5 {
	static int i = 0xA; //0xA = 1010;
	static int j = 0x5; //0x5 = 0101;
	
	static String toBinaryString(int x) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		while(true) {
			list.add(x % 2);
			x = x / 2;
			if(x == 0)
				break;
		}
		StringBuffer s = new StringBuffer();
		for(int i = list.size() - 1; i >= 0 ; i--) 
			s.append(list.get(i));
		return s.toString();
	}
	public static void main(String[] args) {
		System.out.println("i & j is " + toBinaryString(i & j));
		System.out.println("i | j is " + toBinaryString(i | j));
		System.out.println("i ^ j is " + toBinaryString(i ^ j));
	}
} /* Output:
i & j is 0
i | j is 1111
i ^ j is 1111
*///:~


練習6:

package lib.fourth;

import static net.util.Print.*;

public class Exercise_6 {
	static int test(int testval, int target, int begin, int end) {
		if(testval > end || testval < begin)
			return +2;
		else {
			if(testval > target)
				return +1;
			else if(testval < target)
				return -1;
			else
				return 0;
		}		
	}
	public static void main(String[] args) {
		print(test(10, 5, 1, 5));
		print(test(5, 10, 1, 5));
		print(test(5, 5, 1, 5));
	}
} /* Output:
2
-1
0
*///:~


練習7:

package lib.fourth;

public class Exercise_7 {
	public static void main(String[] args) {
		for(int i = 1; i <= 100; i++) {
			System.out.print((i < 10) ? i + "  " : i + " ");
			if(i % 20 == 0)
				System.out.println();
			if(i == 99)
				break;
		}
		System.out.println();
		for(int i = 1; i <= 100; i++) {
			System.out.print((i < 10) ? i + "  " : i + " ");
			if(i % 20 == 0)
				System.out.println();
			if(i == 99)
				return;
		}
	}
} /* Output:
1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 
*///:~


練習8:

package lib.fourth;

import java.util.Random;
import static net.util.Print.*;

public class Exercise_8 {
	public static void main(String[] args) {
		Random rand = new Random();
		int c = rand.nextInt(5) + 'a';
		printnb(c + "(" + (char)c + ") is: ");
		switch(c) {
		case 'a': printnb('a'); break;
		case 'b': printnb('b'); break;
		case 'c': printnb('c'); break;
		case 'd': printnb('d'); break;
		case 'e': printnb('e'); break;
		}
		print();
		for(int i = 'a'; i <= 'e'; i++) {
			switch(i) {
			case 'a': printnb('a'); break;
			case 'b': printnb('b'); break;
			case 'c': printnb('c'); break;
			case 'd': printnb('d'); break;
			case 'e': printnb('e'); break;
			}
			printnb("-" + i + ", ");
		}
		print();
		for(int i = 'a'; i <= 'e'; i++) {
			switch(i) {
			case 'a': printnb('a');
			case 'b': printnb('b');
			case 'c': printnb('c');
			case 'd': printnb('d');
			case 'e': printnb('e');
			}
			printnb(", ");
		}
	}
} /* Output: (66% match)
99(c) is: c
a-97, b-98, c-99, d-100, e-101, 
abcde, bcde, cde, de, e, 
*///:~


練習9:

package lib.fourth;

public class Fibonacci {
	public static void main(String[] args) {
		int smaller = 1;
		int larger = 1;
		System.out.print(smaller);
		for(int i = 1; i < Integer.parseInt(args[0]); i++) {
			larger = smaller + larger;
			smaller = larger - smaller;
			System.out.print(" " + smaller);
		}
	}
} /* Input: 5
Output:
1 1 2 3 5
*///:~


練習10:

package lib.fourth;

import java.util.ArrayList;

public class DigitalVampire {
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<Integer>();
		for(int i = 1001; i < 10000; i++) {
			if(i % 100 != 0) {
				char[] c = String.valueOf(i).toCharArray();
				for(int j = 1; j < 4; j++) {
					StringBuffer s1 = new StringBuffer();
					StringBuffer s2 = new StringBuffer();				
					s1.append(c[0] - '0');
					s1.append(c[j] - '0');					
					switch(j) {
					case 1: s2.append(c[2] - '0');
							s2.append(c[3] - '0'); break;
					case 2: s2.append(c[1] - '0');
							s2.append(c[3] - '0'); break;
					case 3: s2.append(c[1] - '0');
							s2.append(c[2] - '0'); break;
					}
					int p1 = Integer.parseInt(s1.toString());
					int p2 = Integer.parseInt(s2.toString());
					int n1 = Integer.parseInt(s1.reverse().toString());
					int n2 = Integer.parseInt(s2.reverse().toString());
					if(i == p1 * p2 || i == p1 * n2 || i == p2 * n1 ||
							i == n1 * n2) {				
						if(list.isEmpty() ||list.get(list.size() - 1) != i)
							list.add(i);
					}
				}
			}
		}
		for(int x : list)
			System.out.print(x + " ");
	}
} /* Output:
1260 1395 1435 1530 1827 2187 6880 
*///:~



 -END-

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章