1. 程式人生 > >尚學堂 實戰java程式設計 第3、4章課後題答案

尚學堂 實戰java程式設計 第3、4章課後題答案

尚學堂 實戰java程式設計 第3、4章課後題答案

第3章
一、選擇題
1.A
2.BD
解析:switch的的判斷表示式的資料型別:byte short int char
3.A
解析:0+3+5=8
4.BD
解析:函式過載時對返回資料型別不做檢查,但形引數量或型別必須變化,B和原函式是同一函式,D中形引數據個數和型別和原函式相同
5.B
解析:非靜態變數,形參並不影響實參.
二、簡答題
1.答:相同點:他們都是用來處理多分支條件的結構。
不同點:switch語句只能處理等值條件判斷的情況,而且條件只能是整型變數或字元型變數。多重if選擇結構的限制,特別適合某個變數處於某個連續區間時的情況。
2.答:break是跳出迴圈,continue是直接進入下一次迴圈
3.答:使用break- label,先在迴圈之前加入一個label標籤,然後break label;
4.答:定義:一個類中可以有多個相同名字的方法
作用:行為多型
判斷依據:同方法名,不同的形參個數或資料型別
5.答:定義:方法自身呼叫自身
優點:程式碼簡潔,可以省去很多迴圈
缺點:需要消耗大量計算機資源

三、編碼題
1.
程式碼

/**
 * 1. 從鍵盤輸入某個十進位制整數數,轉換成對應的二進位制整數並輸出。
 */
import java.util.Scanner;
public class Homework1 {
	public static void main(String [] args){
		//輸入一個十進位制數
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入一個整數:");
		int num2 = sc.nextInt();
		//轉換
		int num = num2;
		String str="";
		do{
			//除以2得到商
			int div = num/2;
			//得到餘數作為二進位制位
			int mod = num%2;
			str = mod + str;			
			//商作為被除數
			num = div;
		}while(num!=0);//被除數不是零		
		//輸出二進位制數
		System.out.println(num2+"------>"+str);		
	}
}

程式碼

/**
 * 2.程式設計求:∑1+∑2+……+∑100。
 * @author Administrator
 *
 */
public class Homework2 {
	public static void main(String[] args) {
   	 int sum_i=0;
   	 for(int i=1;i<=5;i++){
   		 int sum_j=0;
   		 for(int j=1;j<=i;j++){
   			 sum_j=sum_j+j;	 	 
   		 }
   		 sum_i=sum_i+sum_j; 
   	 }
   	 System.out.println(sum_i);	 
	}
}

程式碼

/**
 * 3. 編寫遞迴演算法程式:一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求數列的第40位數是多少。
 * @author Administrator
 *
 */
public class Homework3 {
	public static void main(String[] args) {
		System.out.println(sum(40));
	}
	public static long sum(int n) {
		if (n <= 0) {
			return 0;
		} else if (n == 1 || n == 2) {
			return 1;
		} else {
			return sum(n - 1) + sum(n - 2);
		}
	}
}

第4章
一、選擇題
1.BD
解析:
B:類必須有構造方法,若程式未寫,這系統自動呼叫系統構造方法.
D:super()會呼叫父類的構造方法,但父類的構造方法不一定無參

2.D
解析:3+4=7
3.AC
解析:
A:靜態方法在類被載入進記憶體時就分配入口地址,此時不一定有非靜態方法
D:this表示構造方法建立的物件,在該類被呼叫時候才產生,而靜態方法在載入記憶體時候就存在,此時不存在物件,不能用this呼叫.
4.AC
解析:
C:只要許可權夠,可以呼叫其他類的方法
5.C
解析:count是全域性變數,count1()方法覆蓋後為10;如果count1中的count1前加int,使count1()中的count成為區域性變數,則為B

二、簡答題
1.答:面向過程是將任務分步,一步一步實現.面向物件是將任務分塊拆分,每塊再用面向過程實現.
2.答:類是物件的抽象集合,物件是類的具體個體.
3.答:
作用:初始化物件
特徵:必須與類名相同,且沒有型別
4.答:
作用:代表正在呼叫該方法的物件
用法:this.成員變數
5.答:作用:為了共享變數或方法

三、編碼題
1.
程式碼

package cn.sxt.exec;
public class Circle {
	private int r;
	/** 無參構造 */
	public Circle(){}
/** 有參構造,初始化半徑*/
	public Circle(int r){
		this.r=r;
	}
	/** 也可以使用setR方法初始化半徑 */
	public void setR(int r){
		this.r = r;
	}
	/**計算 面積 */
	public void getArea(){
		double area = Math.PI * r * r;//從Math工具類得到π的值
		System.out.println("圓的面積為:"+area);
	}
	/** 計算 周長 */
	public void getPerimeter(){
		double zc = Math.PI * 2 * r;
		System.out.println("圓的周長為:"+zc);
	}
}

程式碼

package cn.sxt.exec;
public class Circle {
	private int r;
	/** 無參構造 */
	public Circle(){}
/** 有參構造,初始化半徑*/
	public Circle(int r){
		this.r=r;
	}
	/** 也可以使用setR方法初始化半徑 */
	public void setR(int r){
		this.r = r;
	}
	/**計算 面積 */
	public void getArea(){
		double area = Math.PI * r * r;//從Math工具類得到π的值
		System.out.println("圓的面積為:"+area);
	}
	/** 計算 周長 */
	public void getPerimeter(){
		double zc = Math.PI * 2 * r;
		System.out.println("圓的周長為:"+zc);
	}
}

程式碼

package cn.sxt.exec;
public class People {
	private String id;
	private String password;
	private String email;
	/** 無參構造 */
	public People(){
		
	}
	/** 全參構造 */
	public People(String id,String password,String email){
		this.id = id;
		this.password=password;
		this.email = email;
	}
	public People(String id,String password){
		this.id = id;
		this.password=password;
		this.email=id+"@gameschool.com";
	}
	public void show() {
		System.out.println("編號:"+this.id);
		System.out.println("密碼:"+this.password);
		System.out.println("郵件:"+this.email);
	}
	public static void main(String[] args) {
		//呼叫全參構造
		People p1 = new People("sxt0001","123456","[email protected]");
		p1.show();
		//呼叫無參構造
		People p2 = new People("sxt0002","654321");
		p2.show();
	}
}