天天看點

《Java程式設計習題精析與實驗指導》一2.3 實驗指導

通過實驗熟悉java的資料類型及有關的取值範圍。

掌握不同資料類型的常量、變量的定義與使用方式。

了解java的關鍵字和自定義辨別符的命名規則。

熟悉運算符和表達式的使用以及掌握不同類型資料的轉換規則。

一、程式改錯

下面的程式使用“?:”運算符實作求一個變量的絕對值,設該變量的值為8,則程式運作結果如圖2-2所示。

《Java程式設計習題精析與實驗指導》一2.3 實驗指導

找出下列程式中的錯誤,并将其改正。

答案:

解析:根據條件運算符“?:”的運算規則,它首先判别表達式a>0的值,由于目前a=8,故表達式的值為真,則傳回–a的值,這顯然是不合要求的。是以要将表達式改為a<0。在第6行的輸出語句中,變量a之後與變量b之前的加号的作用是:讓a的取值與它後面的字元串以及b的取值相連接配接,然後再輸出結果字元串(實際上在連接配接的過程中首先将a和b轉換成等同的字元串然後再進行連接配接)。一般來說,在println()方法中若要将多個字元串連在一起,通常是用加号來實作的。第9行語句的修改理由與第6行是一樣的。

二、程式設計題

編寫程式,利用system.out.println()方法分别輸出下列語句的執行結果:

1)将變量a的初值指派為10,變量b的初值指派為5。

2)變量a的值加2,變量b的值加5。

3)求a和b的平均值,并将該值賦予變量c。

4)将a的平方乘以b的平方并指派給變量d。

答案:程式代碼如下:

解析:java語言規定:任何變量在使用之前必須聲明,在變量聲明的過程中允許同時對變量進行指派。程式中的“a+=2;”與“b+=5;”語句是在變量a和b已被指派的情況下的複合指派運算語句;本程式中使用的pow(double a,double b)方法,傳回第一個參數(a)的第二個參數(b)次幂的值,即ab的值。該方法被封裝于java.lang的math類中。值得注意的是:這個方法的兩個參數都必須是double類型,但由于我們所聲明的a和b變量都為int類型,是以在使用前必須進行強制轉換,同時我們聲明的變量d是long類型,是以當乘法運算結束時,必須再一次将結果強制轉換為long類型資料才能指派給d。

在這裡使用的pow()方法,在第1章中所提到的api文檔中有着詳細的介紹,希望大家在今後的學習過程中對這部分内容要時常地加以熟悉。

一、觀察與思考

編寫聲明不同資料類型變量的程式檔案sy2_1.java,源代碼如下:

在原有代碼後面加上相應的輸出語句,輸出變量的值。編譯并運作該程式,仔細觀察其運作結果。

程式分析:

在程式的第3行至第6行的語句中,可以看到:對于java的整型變量,不管以何種數制進行輸入,系統總會将其轉換為十進制數進行輸出。

在程式的第7行語句中,java的字元型常量值是用單引号引起來的一個字元,雙引号用來表示字元串,兩者切記不可混用。

在程式的第8行語句中,語句的最後加了一個資料類型符f,為什麼要加這個符号呢?這是為了“告訴”編譯器将該常數按程式員指定的資料類型(該處為單精度型)進行處理,因為編譯系統在處理類似“0.25”這樣的“直接常數”時,有其預設的處理規則:對于整數一律按int類型處理;對于浮點數一律按double類型處理。第8行的語句若是不加f的話,編譯器就會将資料0.25按double類型處理,double類型的資料要指派給float類型的變量,系統不能進行自動轉換,是以就會出現編譯錯誤。對于第6行的語句,正規的指派語句應該是“long ml=0xffffl;”,若是後面不加l,編譯器将把十六進制數ffff轉換為十進制數65535後按int類型處理,由于65535屬于int類型的處理範圍,因而處理完畢後指派給長整型變量ml,int類型的資料到long類型的資料,系統可以進行自動轉換,是以不會出錯。

在程式的第10行語句中,java的布爾型常量隻有兩個值:false和true,使用時兩邊不能加任何引号。

建立sy2_2.java 檔案,通過本程式了解變量的使用範圍,源代碼如下:

觀察編輯視窗的提示情況,試修改上面的程式,然後編譯并運作該程式。

此時會出現錯誤提示。因為變量b在方法塊中聲明,在方法塊之外它是不存在的, 是以此時系統會提示出錯。修改方法有兩種:一是将變量b作為靜态變量聲明到第二行(即變量a的聲明語句)的後面,二是幹脆删除第10行關于變量b的輸出語句。

二、程式改錯

下面的程式為完成變量初始化及指派的操作,請改正其中錯誤的語句。

下面的程式實作變量的初始化、指派、運算以及輸出的操作,請改正其中錯誤的語句。

三、程式設計題

編寫一個java application,其功能為:在程式中取兩個随機整數(10~300),以如圖2-3所示形式顯示它們的和(設兩個随機數分别為204和94)。

《Java程式設計習題精析與實驗指導》一2.3 實驗指導

提示:可在java.lang.math類中調用random()方法,random()為實作取0~1之間的随機數方法,該方法傳回值是正數,類型為double。如果要得到其他範圍的數,則要進行相應的轉換。例如要得到(a,b)之間整數的方法可寫為:(int) ((b–a+1)math.random()+a),若要得到(0,99)之間的整數可以使用語句:int m = (int) (100math.random())。