第一篇:自考Java語言程序設計(一)第五章以后課后習題及答案
.........自考Java語言程序設計
(一)第五張課后習題及答案
自考Java語言程序設計
(一)第五章類的繼承課后習題
五、類的繼承
l.什么是繼承?什么是父類?什么是子類?繼承的特性可給面向對象編程帶來什么好處?什么是單重繼承?什么是多重繼承?
2.觀察下面的程序片斷,指出其中的父類和子類,以及父類和子類的各個域和方法。
class SuperClass
{
int data;
voidsetData(intnewData)
{
data=newData~
}
intgetData()
{
return data~
}
}
class SubClass extends SuperClass
{
int suhData;
void setSubData(intnewData)
{
suhData=new Data;
}
intgetData()
{
return subData;
}
}
3.“子類的域和方法的數目一定大于等于父類的域和方法的數目”,這種說法是否正確?為什么?
4.在Java程序中,通過類的定義只能實現單重繼承()
5.下列哪些說法是正確的?
A、Java 語言只允許單一繼承
B、Java 語言只允許實現一個接口
C、Java 語言不允許同時繼承一個類并實現一個接口
D、Java 語言的單一繼承使得代碼更加可靠
6.Java中所有類都是類________的子類。
.........7.請寫出下面程序的運行結果。
public class Test extends TT{
public void main(String args[]){
Test t = new Test(“Tom”);
}
public Test(String s){
super(s);
System.out.println(“How do you do?”);
}
public Test(){
this(“I am Tom”);
}
} www.tmdps.cnumber_2).toString());
System.out.println(cNumber_1.toString()+ “ 加 ”
.........+ d + “ 等于 ”
+ cNumber_1.complexAdd(d).toString());System.out.println(cNumber_1.toString()+ “ 減 ” + cNumber_2.toString()+ “ 等于 ” + cNumber_1.complexMinus(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 減 ” + d + “ 等于 ” + cNumber_1.complexMinus(d).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + cNumber_2.toString()+ “ 等于 ” + cNumber_1.complexMulti(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + d + “ 等于 ” + cNumber_1.complexMulti(d).toString());} } class ComplexNumber { //域
private double m_dRealPart;private double m_dImaginPart;//構造方法
ComplexNumber(){ m_dRealPart = 0.0;m_dImaginPart = 0.0;} ComplexNumber(double r,double i){ m_dRealPart = r;m_dImaginPart = i;} ComplexNumber(ComplexNumber c){ m_dRealPart = c.getRealPart();m_dImaginPart = c.getImaginaryPart();} //get,set方法
double getRealPart(){ return m_dRealPart;} double getImaginaryPart(){
.........return m_dImaginPart;} void setRealPart(double d){ m_dRealPart = d;} void setImaginaryPart(double d){ m_dImaginPart = d;} //復數運算方法
ComplexNumber complexAdd(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart + c.getRealPart(), this.m_dImaginPart + c.getImaginaryPart());} ComplexNumber complexAdd(double c){ return new ComplexNumber(this.m_dRealPart + c, this.m_dImaginPart);} ComplexNumber complexMinus(ComplexNumber c){ return new ComplexNumber(this.m_dRealPartc.getImaginaryPart());} ComplexNumber complexMinus(double c){來源:www.tmdps.cn return new ComplexNumber(this.m_dRealPart-c, this.m_dImaginPart);} ComplexNumber complexMulti(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart * c.getRealPart()
-this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart()+ this.m_dImaginPart * c.getRealPart());} ComplexNumber complexMulti(double c){ return new ComplexNumber(.........this.m_dRealPart * c, this.m_dImaginPart * c);
}
//toString()
public String toString()
{
return “(” + m_dRealPart + “ + ”
+ m_dImaginPart + “ i” + “)”;
}
}
8.答:接口是用來實現類間多重繼承功能的結構。接口與類相似,但是接口中只能包括常量和抽象方法。定義接口相當于定義了一組抽象的功能、屬性集合,可以使了ava程序的類層次結構更加合理,并實現多重繼承。
9.答:使用關鍵字implements可以定義類實現某接口。實現某接口的類如果不是抽象類,則需要通過重載來實現該接口中的所有抽象方法;如果這個類是抽象類,則它可以不必實現該接口中的所有抽象方法。
10.答:接口可以被繼承。
SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();兩個。
自考Java語言程序設計
(一)第七章Java常用類庫介紹課后習題
七、Java 常用類庫介紹
1.指出下列陳述是對還是錯,并做出解釋。
(1)當String對象用= = 比較時,如果String包括相同的值則結果為true。
(2)一個String類的對象在其創建后可被修改。
2.對于下列描述,各寫出一條語句完成要求的任務
(1)比較s1中的串和s2中的串的內容的相等性;
(2)用+=向串s1附加串;
(3)判斷s1中串的長度;來源:考試大
3.說明capacity()與length()用法上的差異?
4.如果ch為StringBuffer對象,ch=“Java Apple”,下列結果為何?
(1)ch.insert(3,’p’)(2)ch.append(“Basic”)
(3)ch.setlength(5)(4)ch.reverse()
5.Math類中提供用來常數π和e的靜態屬性分別是什么?
6.下面關于Vector類的說法正確的是()
(1)類Vector在java.util包中。
(2)一個向量(Vector)對象存放的是一組有序的對象。
(3)一個向量(Vector)對象大小可以根據存放的元素個數的增加而自動增加。
(4)一個向量(Vector)對象中每個元素可以是不同類型的對象。
7.有三個字符串,編寫程序找出其中最大者。
8.編寫一個程序,設定一個有大小寫字母的字符串,先將字符串的大寫字符輸出,再將字符串中的小寫字符輸出。
.........9.設定5個字符串,要求只打印那些以字母“b”開頭的串,編寫程序完成。
10.設定一個有大小寫字母的字符串和一個查找字符,使用類 String方法IndexOf()來判斷在該字符串中該字符出現的次數。
參考答案
1.答:
(1)錯。用= =操作符比較String對象實際上是判斷它們在內存中是否為同一對象,并不是判斷它們的值是否相同。
(2)錯。String類的對象是常量。它們被創建后不可被修改。
2.答:
(1)s1.equals(s1,s2);
(2)s1+=s2;
(3)s1.length();
3.答:capacity()返回字符串對象的當前緩沖區的長度,length()返回字符串對象字符的長度。考試大收集整理
4.答:
(1)結果:Javpa Applet
(2)結果:Javpa AppletBasic
(3)結果:ch長度變為5
(4)結果:apvaJ
5.答:PI、E
6.答:(3)
7.public class max1
{
public static void main(String args[])
{
String s1= “Hello Java”;
String s2= “Java Applet”;
String s3= “Java”;
String s;
if(s1.compareTo(s2)<0)
s=s2;
else s=s1;
if(s.compareTo(s3)<0)
s=s3;
Systrm.out.println(“big=”+s);
}
}
8.public class out
{
public static void main(String args[])
{
String s1= “Hello Java”;
.........StringBuffer bufup=new StringBuffer();StringBuffer buflow=new StringBuffer();for(int I=0;I {if(s1.charAt(i)<97){bufup.append(s1.charAt(i));bufup.append(' ');} else { buflow.append(s1.charAt(i));buflow.append('');} } System.out.println(“s1= ”+s1);System.out.println(“ uppercase= ”+bufup);System.out.println(“ lowercase= ”+buflow);} } 9.
public class prin_b { public static void main(String args[]){ String s1=“hello”;String s2=“bee”;String s3=“java”;String s4=“brove”;String s5=“bag”;if(s1.indexOf('b')= =0)System.out.println(s1);if(s2.indexOf('b')= =0)System.out.println(s2);if(s3.indexOf('b')= =0)System.out.println(s3);if(s4.indexOf('b')= =0)System.out.println(s4);if(s5.indexOf('b')= =0)System.out.println(s5);} } 10.
public class ppp { public static void main(String args[]){ String s1=“abcdefghi”;
.........int num=0;
for(int i=0;i
{i=s1.indexof('e',i);
num++;
}
System.out.print(“ s1=”+s1+“e=”);
if(num= =0)
System.out.println(“ no found”);
else System.out.println(num);
}
}
自考Java語言程序設計
(一)第八章Java異常處理及輸入輸出流簡介課后習題
八、Java異常處理及輸入輸出流簡介
1.列出5個常見的異常。
2.寫出Java語言的異常處理機制的優點。
3.為什么異常處理技術不應該用于常規的程序控制?
4.引起異常產生的條件是什么?
5.異常沒有被捕獲將會發生什么?
6.編寫一個程序,以說明catch(Exception e)如何捕獲各種異常。
7.下面的代碼段中finally語句塊會被執行嗎?
public class ExceptionExam3
{
public static void main(String [] args)
{
try
{
int [] a=new int[3];
System.exit(0);
}
catch(ArrayIndexOutOfBoundsException e)
{System.out.println(“發生了異常”);}
finally
{System.out.println(“Finally”);}
}
}
8.throws的作用是什么?
9.應在程序的什么地方使用異常處理?
10.下面的代碼有什么錯誤嗎?
class ExceptionExam{?}
throw new ExceptionExam();
11.異常類型匹配的處理方式。程序功能:首先輸出“這是一個異常處理的例子”,.........然后在你程序中主動地產生一個 ArithmeticException 類型被0 除而產生的異常,并用catch 語句捕獲這個異常。最后通過ArithmeticException類的對象e的方法getMessage 給出異常的具體類型并顯示出來。
12.根據所給創建自定義異常類的使用格式,編寫一個自定義異常的小程序。
13.什么叫流?流式輸入輸出有什么特點?
14.Java流被分為字節流、字符流兩大流類,兩者有什么區別?
15.File類有哪些構造函數和常用方法?
16.利用文件輸入輸出流編寫一個實現文件拷貝的程序,源文件名和目標文件名通過命令行參數傳入。
17.編寫一個程序,在當前目錄下創建一個子目錄test,在這個新創建的子目錄下創建一個文件,并把這個文件設置成只讀。
18.位置指針的作用是什么?RandomAccessFile類提供了哪些方法實現對指針的控制?
19.編寫一個程序,從鍵盤輸入一串字符,統計這串字符中英文字母、數字、其他符號的字符數。
20.編寫一個程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文件中。采集者退散
21.編寫一個程序,從鍵盤輸入10個整數,并將這些數據排序后在標準輸出上輸出。
參考答案
1.答:內存耗盡、數組下標超出邊界、被0除、非法的方法參數、算法溢出處。來源:考試大的美女編輯們
2.答:(1)Java通過面向對象的方法進行異常處理,把各種異常事件進行分類,體現了良好的層次性,提供了良好的接口,這種機制對于具有動態特 性的復雜提供了強有力的控制方式。(2)Java的異常處理機制使得處理異常的代碼和“常規”代碼分開,減少了代碼的數量,增強了程序的可讀性。(3)Java的異常處理機制使得異常事件可以沿調用棧自動向上傳播,而不是C語言中通過函數的返回值來傳播,這樣可以傳遞更多的信息,并且簡化了代碼的編寫。(4)由于把事件當成事件處理,利用類的層次性我們可以把多個具有相同父類的異常統一處理,也可以區分不同的異常分別處理,使用非常靈活。
3.答:a.異常處理用于不經常發生但通常導致程序終止的情況,因此要求編程人員為編譯器的優化執行實現異常處理。b.常規控制結構的控制流程通常比異常的更為清晰、交流更高。c.在發生異常,并且沒有釋放異常發生之前分配的資源時,堆棧是展開的,所以會出現一些問題。d.“額外的”異常會妨礙真正錯誤類型的異常。這種使程序員更難 以跟蹤大量的異常。
4.答:異常產生的方式有3種。第一種是在某些內部錯誤時,Java虛擬機可以產生異常,該異常不在你的程序控制范圍內,通常不作處理。第二種是由程序代碼中的錯誤引起,這種異常需要你的程序處理。第三種是通過使用throw語句手動生成的異常。
5.答:未捕獲的異常最終會導致程序非正常終止。
6.public class ExceptionExam
{
public static void main(String [] args)
{
try
{
.........int i=0;
i=3/i;//將產生算術異常。
}
catch(ArithmeticException e)//找到了匹配的異常,執行該catch塊。
{
System.out.println(“發生了ArithmeticException異?!?;
}
catch(AarryIndexOutOfBoundsException e)//不是匹配的異常,且不會再捕獲
//異常,如果發生數組索引超出范圍所產生的異常,將執行該catch塊。
{
System.out.println(“發生了AarryIndexOutOfBoundsException異?!?;
}
catch(Exception e)
//前兩個catch塊均無法捕獲try塊中發生的異常時,才會執行該catch塊。
{
System.out.println(“發生了異常”);
}
finally
{ System.out.println(“執行d Finally”);}
}
}
7.答:無論是出于何種原因,只要執行離開try/catch代碼塊,就會執行finally代碼塊。即無論try是否正常結束,都會執行 finally定義的最后的代碼。如果try代碼塊中的任何代碼或它的任何catch語句從方法返回,也會執行finally代碼塊。但本題中在try代 碼塊中執行了“System.exit(0);”語句,執行了這一語句后,Java虛擬機(JVM)將被終止。那么finally語句塊一定不會被執行。
8.答:在某些情況下,如果一個方法產生自己不處理或無法處理的異常,它就必須在throws子句中聲明該異常。
9.答:通常,可以采用兩種方式來報告錯誤:返回值和異常。在Java中異常處理很常用,雖然返回錯誤代碼在某些情況下是一種有效的方式,但是異常處理可以提供強大的結構化方法來處理異常。所以需要處理代碼中的錯誤時就可以采用異常的方法進行處理。
10.答:ExceptionExam不是繼承(擴展)Throwable的子類,只有Throwable的子類可以由throw拋出。所以,這一段代碼會出錯。
11.public class ExceptionExam1
{
public static void main(String [] args)
{
try
{int i=0;
i=3/i;
}
catch(ArithmeticException e)
{
.........System.out.println(“異常是:”+e.getMessage());
}
finally
{
System.out.println(“finally 語句被執行”);
}
}
}
注意:如果在catch 語句中聲明的異常類是Exception,catch 語句也能正確地捕獲,這是因為Exception 是ArithmeticException 的父類。如果不能確定會發生哪種情況的異常,那么最好指定catch的參數為Exception,即說明異常的類型為Exception。
12.class Excp1 extends Exception
{}
class Excp2 extends Excp1
{}
public class ExceptionExam7
{
public static void main(String [] args)throws Exception
{
try
{
throw new Excp2();
}
catch(Excp2 e)
{
System.out.println(“catch1”);
throw new Excp1();
}
catch(Excp1 e)
{
System.out.println(“catch2”);
throw new Exception();
}
catch(Exception e)
{
System.out.println(“catch3”);
}
finally
{
System.out.println(“finally”);
}
}
}
.........說明:自定義異常類,關鍵是選擇繼承的超類——必須是Exception或者其子類。用異常代表錯誤,而不要再使用方法返回值。
13.答:所謂流是指同一臺計算機或網絡中不同計算機之間有序運動著的數據序列,Java把這些不同來源和目標的數據都統一抽象為數據流。數據流可分為輸入流和輸出流,輸入流代表從其他設備流入計算機的數據序列,輸出流代表從計算機流向外部設備的數據序列。
流式輸入輸出的特點是數據的獲取和發送沿數據序列的順序進行,即每一個數據都必須等待排在它前面的數據,等前面的數據讀入或送出之后才能被讀寫。所以流和隊列一樣,只能以“先進先出”的方式對其中的數據進行讀寫,而不能隨意選擇讀寫的位置。
14.答:兩者都作為Object類的直接子類,基本輸入流(無效Stream)和基本輸出流(OutputStream)是處理以8位字節為基本單位的字節流類;Reader和Writer類是專門處理16位字符流的類。
15.答:構造函數有:
(1)public File(String pathname):創建一個對應于參數pathname的File類對象。參數pathname是包含目錄和文件名的字符串。如果沒有文件名,則代表目錄。
(2)public File(String parent , String child):該構造函數將pathname分成兩部分parent和child,參數parent表示目錄或文件所在路徑,參數child表示目錄或文件名稱。
(3)public File(File parent, String child):該構造函數與上面一個不同在于將parent的參數類型由String變為File,代表parent是一個已經創建的File類文件對象(指向目錄)。
常用方法有:
(1)public boolean canWrite():返回文件是否可寫。
(2)public boolean canRead():返回文件是否可讀。
(3)public boolean createNewFile():當文件不存在時創建文件。
16.import java.io.*;
class CopyFile{
public static void main(String[] args){
String file1,file2;
int ch = 0;
try {
file1=args[0];
file2=args[1];
File無效Stream fis = new File無效Stream(file1);
FileOutputStream fos=new FileOutputStream(file2);
while((ch=fis.read())!=-1)
fos.write(ch);
fis.close();
fos.close();
}
catch(FileNotFoundException e){
System.out.println(“源文件:未找到!”);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println(“缺少運行參數!”);
System.exit(-1);
}
.........catch(IOException e){
System.out.println(e.toString());
}
}
}
17.答:
import java.io.*;
public class NewFile{
public static void main(String args[]){
File f=new File(“test”);
if(f.exists()&&f.isDirectory())
System.err.println(“目錄:”+f.toString()+“已經存在!”);
else{
if(f.mkdir()){
System.out.println(“目錄”+f.getAbsolutePath()+“創建結束!”);
File f2=new File(f,“my.txt”);
try{
f2.createNewFile();
f2.setReadOnly();
}catch(IOException e){
System.out.println(e.toString());
}
System.out.println(“文件:”+f2.getAbsoluteFile()+“創建結束!”);
}
else
System.out.println(“目錄”+f.getAbsoluteFile()+“創建失敗!”);
}
}
}
18.答:要實現對文件的隨機讀取,也就是在文件的任何位置執行讀寫數據的操作,需要一個指針來指定讀寫的位置。在創建 RandomAccessFile類對象的同時,系統自動創建了一個指向這個文件開頭的指針,當執行讀寫操作后,指針自動指向被讀寫數據之后的第一個字節 處。指針初始值是0,每讀/寫一個字節,指針自動增加1。RandomAccessFile類提供了一些控制指針移動的方法。
public long getFilePointer();獲取當前指針指向文件的位置??荚嚧笳搲?/p>
pulbic void seek(long pos);將指針移動到參數pos指定的位置。
public int skipBytes(int n);指針從當前位置向后移動n個字節位置,并返回指針實際移動的字節數。
19.答:
import java.io.*;
public class Count{
public static void main(String[] args)
{
int x=0,y=0,z=0;
.........int ch;try{ while((ch=System.in.read())!='r'){ if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')x++;else if(ch>='0'&&ch<='9')y++;else z++;} }catch(IOException e){ System.out.println(e.toString());} System.out.println(“英文字母:”+x);System.out.println(“數字字符:”+y);System.out.println(“其它字符:”+z);} } 20.答:
import java.io.*;public class InFile{ public static void main(String[] args){ int ch;try{ FileOutputStream out=new FileOutputStream(“a.txt”);while((ch=System.in.read())!='r'){ System.out.write(ch);out.write(ch);} out.close();System.out.write('n');}catch(IOException e){ System.out.println(e.toString());} System.out.println(“輸出至文件完畢!”);} } 21.答:
import java.io.*;public class Sort{ public static void main(String args[]){ int a[]=new int[10];
.........byte b[]=new byte[10];
int t;
String str;
System.out.println(“請輸入10個整數:”);
try{
for(int i=0;i<10;i++)
{System.out.print(“No.”+(i+1)+“: ”);
System.in.read(b);
str=new String(b);
str=str.trim();
a[i]=Integer.parseInt(str);
}
}catch(IOException e){
System.out.println(e.toString());
}
catch(NumberFormatException e){
System.out.println(e.toString());
}
for(int i=0;i<9;i++)
for(int j=i+1;j<10;j++)
{
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(int i=0;i<10;i++)
System.out.println(a[i]+“t”);
}
}
自考Java語言程序設計
(一)第九章JavaApplet概述課后習題
九、Java Applet概述
1.下列方法中,哪一個不是Applet的基本方法()
A、init()B、run()C、stop()D、start()
2.在Java中判定Applet的來源的方法有()
A、getcodebase()B、get文檔base()
C、getCodeBase()D、get文檔Bade()
3.下面關于Applet的說法正確的是
A、Applet也需要main方法
B、Applet必須繼承自javawt.Applet
.........()
C、Applet能訪問本地文件 D、Applet程序不需要編譯
4.Applet類的直接父類是()A.Component類
B.Container類
C.Frame類
D.Panel類
5.判斷:一個Applet編譯后的類名是Test.class,運行此小程序的命令是Java Test。
6.編寫同時具有Applet與Application的特征的程序。具體方法是:作為Application要定義main()方法,并且把 main()方法所在的類定義一個類。為使該程序成為一個Applet,main()方法所在的這個類必須繼承Applet類或JApplet類。www.tmdps.cn d.二者都沒有
7.下面的__________用戶界面組件不是容器。a.JScrollPane b.JFrame考試大-全國最大教育類網站(www.tmdps.cn)c.JWindows d.JScrollBar 8.創建下面的GUI,顏色列表框為紅色、綠色和藍色(不必為各組件提供功能)。參考答案 1.false 2.true 3.標簽 4.B D 5.B 6.C 7.D 8.參考程序如下: import javawt.*;public class Chp9_3_B extends Frame{ Choice ch;Checkbox bg,fg;Button btnOK,btnCancel;Panel p,p1,p2;public Chp9_3_B(){ p=new Panel();p.setLayout(new GridLayout(2,1));p1=new Panel();p2=new Panel();p1.setLayout(new FlowLayout());
.........p2.setLayout(new FlowLayout());ch=new Choice();ch.add(“紅色”);ch.add(“綠色”);ch.add(“藍色”);bg=new Checkbox(“背景”);fg=new Checkbox(“前景”);p1.add(bg);p1.add(fg);btnOK=new Button(“確定”);btnCancel=new Button(“取消”);p2.add(btnOK);p2.add(btnCancel);p.add(p1);p.add(p2);add(ch,BorderLayout.NORTH);add(p,BorderLayout.CENTER);setSize(400,300);} public static void main(String[] args){ new Chp9_3_B().setVisible(true);} }
自考Java語言程序設計
(一)第十三章課后習題
十三、常用組件之二 _______單行文本框與多行文本框,單選框和復選框
1.判斷:列表對象總包含滾動條。()
2.判斷:面板的默認管理器是BorderLayout。
3.____________類用于創建一組單選按鈕。來源:考試大
4.欲編寫如下圖的一個界面,用于顯示用戶指定的圖像: 如果在區域A中只能放置一個
AWT組件,從各組件的本來功能角度考慮,最好使用哪種組件:
A、TextArea
B、Panel
C、Applet
D、Canvas
5.Java應用程序中的默認外觀是_________。
A.Motif
B.Windows
C.METAl
.........6.創建下面的GUI,要求在文本框中輸入分數,單擊“求和”按鈕后在結果文本框中顯示總分。
7.編寫一個將華氏溫度轉換為攝氏溫度的程序。應從鍵盤輸入華氏溫度,然后通過文本顯示轉換后的攝氏溫度。使用下面的公式進行溫度轉換:
攝氏溫度=5/9Χ(華氏溫度-32)
8.編寫一個程序,使用戶能夠使用鼠標在applet中繪制一個矩形。按住鼠標左鍵,確定矩形的左上角,然后拖動鼠標,在需要的位置(即矩形右下角)釋放鼠標。另外,在狀態欄中顯示矩形面積。
參考答案
1.false
2.true
3.CheckboxGroup
4.D
5. C
6.參考程序如下:
import javawt.*;來源:考試大
import javawt.event.*;
public class Chp9_3_C extends Frame implements ActionListener{
TextField textField1,textField2,textField3;
Button button1=new Button(“求和”);
Panel panel1,panel2;
public Chp9_3_C(){
textField1=new TextField();
textField2=new TextField();
textField3=new TextField();
panel1=new Panel();
panel2=new Panel();
panel1.setLayout(new GridLayout(3,2));
panel2.setLayout(new FlowLayout());
panel1.add(new Label(“數學: ”));
panel1.add(textField1);
panel1.add(new Label(“英語: ”));
panel1.add(textField2);
panel1.add(new Label(“總分: ”));
panel1.add(textField3);
panel2.add(button1);
add(panel1,BorderLayout.CENTER);
add(panel2,BorderLayout.SOUTH);
button1.addActionListener(this);
setSize(300,200);
setVisible(true);
}
public static void main(String[] args){
new Chp9_3_C();
.........} public void actionPerformed(ActionEvent e){ int n1,n2,sum;n1=Integer.parseInt(textField1.getText());n2=Integer.parseInt(textField2.getText());sum=n1+n2;textField3.setText(“"+sum);} } 6.參考程序如下: import javawt.*;import javawt.event.*;public class Chp9_3_D extends Frame{ TextField textField1,textField2;Button button1;public Chp9_3_D(){ textField1=new TextField(30);textField2=new TextField(30);button1=new Button(”轉換“);setLayout(new FlowLayout());add(new Label(”華氏溫度:“));add(textField1);add(new Label(”攝氏溫度:“));add(textField2);textField2.setEditable(false);add(button1);setSize(400,300);pack();button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ button1_actionPerformed(e);} });addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public static void main(String[] args){ new Chp9_3_D().setVisible(true);} private void button1_actionPerformed(ActionEvent e){ double d=Double.parseDouble(textField1.getText());
.........double h=5.0/9.0*(d-32);
textField2.setText(”“+h);
}
}
7.參考程序如下:
import javapplet.Applet;
import javawt.*;
import javawt.event.*;
public class Chp9_3_E MouseListener,MouseMotionListener{
int x1,y1,x2,y2;
public void init(){
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g){
g.drawRect(x1,y1,x2,y2);
int area=Math.abs(x2-x1)*Math.abs(y2-y1);
showStatus(”矩形面積: "+area);
}
//implementation of MouseListener
public void mousePressed(MouseEvent e){
x1=e.getX();
y1=e.getY();
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
//implementation of MouseMotionEvent
public void mouseDragged(MouseEvent e){
x2=e.getX();
y2=e.getY();
repaint();
}
public void mouseMoved(MouseEvent e){}
}
extends Applet implements
第二篇:自考Java語言程序設計(一)課后習題及答案
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........自考Java語言程序設計
(一)課后習題及答案
自考Java語言程序設計
(一)第一章Java語言概述課后習題
一、Java語言概述
1.Java語言有哪些特點?
2.什么叫做類?什么叫做對象?
3.簡述Java的運行機制。
4.簡述Java應用程序的開發流程。
5.當初Sun公司發展Java的原因是:來源:www.tmdps.cnumber_1 =
new ComplexNumber(3,-5);
ComplexNumber cNumber_2 = 本文來源:考試大網
new ComplexNumber(2,2);
double d = 10.0;
System.out.println(cNumber_1.toString()+ “ 加 ”
+ cNumber_2.toString()+ “ 等于 ”
+ cNumber_1.complexAdd(cNumber_2).toString());
System.out.println(cNumber_1.toString()+ “ 加 ”
+ d + “ 等于 ”
+ cNumber_1.complexAdd(d).toString());
System.out.println(cNumber_1.toString()+ “ 減 ”
+ cNumber_2.toString()+ “ 等于 ”
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........+ cNumber_1.complexMinus(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 減 ” + d + “ 等于 ” + cNumber_1.complexMinus(d).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + cNumber_2.toString()+ “ 等于 ” + cNumber_1.complexMulti(cNumber_2).toString());System.out.println(cNumber_1.toString()+ “ 乘 ” + d + “ 等于 ” + cNumber_1.complexMulti(d).toString());} } class ComplexNumber { //域
private double m_dRealPart;private double m_dImaginPart;//構造方法
ComplexNumber(){ m_dRealPart = 0.0;m_dImaginPart = 0.0;} ComplexNumber(double r,double i){ m_dRealPart = r;m_dImaginPart = i;} ComplexNumber(ComplexNumber c){ m_dRealPart = c.getRealPart();m_dImaginPart = c.getImaginaryPart();} //get,set方法
double getRealPart(){ return m_dRealPart;} double getImaginaryPart(){ return m_dImaginPart;} void setRealPart(double d){
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........m_dRealPart = d;} void setImaginaryPart(double d){ m_dImaginPart = d;} //復數運算方法
ComplexNumber complexAdd(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart + c.getRealPart(), this.m_dImaginPart + c.getImaginaryPart());} ComplexNumber complexAdd(double c){ return new ComplexNumber(this.m_dRealPart + c, this.m_dImaginPart);} ComplexNumber complexMinus(ComplexNumber c){ return new ComplexNumber(this.m_dRealPartc.getImaginaryPart());} ComplexNumber complexMinus(double c){來源:www.tmdps.cn return new ComplexNumber(this.m_dRealPart-c, this.m_dImaginPart);} ComplexNumber complexMulti(ComplexNumber c){ return new ComplexNumber(this.m_dRealPart * c.getRealPart()
-this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart()+ this.m_dImaginPart * c.getRealPart());} ComplexNumber complexMulti(double c){ return new ComplexNumber(this.m_dRealPart * c, this.m_dImaginPart * c);} //toString()public String toString()
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........{
return “(” + m_dRealPart + “ + ”
+ m_dImaginPart + “ i” + “)”;
}
}
8.答:接口是用來實現類間多重繼承功能的結構。接口與類相似,但是接口中只能包括常量和抽象方法。定義接口相當于定義了一組抽象的功能、屬性集合,可以使了ava程序的類層次結構更加合理,并實現多重繼承。
9.答:使用關鍵字implements可以定義類實現某接口。實現某接口的類如果不是抽象類,則需要通過重載來實現該接口中的所有抽象方法;如果這個類是抽象類,則它可以不必實現該接口中的所有抽象方法。
10.答:接口可以被繼承。
SubInterface中的抽象方法有:public abstract int supMethod();和public abstract string subMethod();兩個。
自考Java語言程序設計
(一)第七章Java常用類庫介紹課后習題
七、Java 常用類庫介紹
1.指出下列陳述是對還是錯,并做出解釋。
(1)當String對象用= = 比較時,如果String包括相同的值則結果為true。
(2)一個String類的對象在其創建后可被修改。
2.對于下列描述,各寫出一條語句完成要求的任務
(1)比較s1中的串和s2中的串的內容的相等性;
(2)用+=向串s1附加串;
(3)判斷s1中串的長度;來源:考試大
3.說明capacity()與length()用法上的差異?
4.如果ch為StringBuffer對象,ch=“Java Apple”,下列結果為何?
(1)ch.insert(3,’p’)(2)ch.append(“Basic”)
(3)ch.setlength(5)(4)ch.reverse()
5.Math類中提供用來常數π和e的靜態屬性分別是什么?
6.下面關于Vector類的說法正確的是()
(1)類Vector在java.util包中。
(2)一個向量(Vector)對象存放的是一組有序的對象。
(3)一個向量(Vector)對象大小可以根據存放的元素個數的增加而自動增加。
(4)一個向量(Vector)對象中每個元素可以是不同類型的對象。
7.有三個字符串,編寫程序找出其中最大者。
8.編寫一個程序,設定一個有大小寫字母的字符串,先將字符串的大寫字符輸出,再將字符串中的小寫字符輸出。
9.設定5個字符串,要求只打印那些以字母“b”開頭的串,編寫程序完成。
10.設定一個有大小寫字母的字符串和一個查找字符,使用類 String方法IndexOf()來判斷在該字符串中該字符出現的次數。
參考答案
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........1.答:
(1)錯。用= =操作符比較String對象實際上是判斷它們在內存中是否為同一對象,并不是判斷它們的值是否相同。
(2)錯。String類的對象是常量。它們被創建后不可被修改。
2.答:
(1)s1.equals(s1,s2);
(2)s1+=s2;
(3)s1.length();
3.答:capacity()返回字符串對象的當前緩沖區的長度,length()返回字符串對象字符的長度??荚嚧笫占?/p>
4.答:
(1)結果:Javpa Applet
(2)結果:Javpa AppletBasic
(3)結果:ch長度變為5
(4)結果:apvaJ
5.答:PI、E
6.答:(3)
7.public class max1
{
public static void main(String args[])
{
String s1= “Hello Java”;
String s2= “Java Applet”;
String s3= “Java”;
String s;
if(s1.compareTo(s2)<0)
s=s2;
else s=s1;
if(s.compareTo(s3)<0)
s=s3;
Systrm.out.println(“big=”+s);
}
}
8.public class out
{
public static void main(String args[])
{
String s1= “Hello Java”;
StringBuffer bufup=new StringBuffer();
StringBuffer buflow=new StringBuffer();
for(int I=0;I
{if(s1.charAt(i)<97)
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........{bufup.append(s1.charAt(i));bufup.append(' ');} else { buflow.append(s1.charAt(i));buflow.append('');} } System.out.println(“s1= ”+s1);System.out.println(“ uppercase= ”+bufup);System.out.println(“ lowercase= ”+buflow);} } 9.
public class prin_b { public static void main(String args[]){ String s1=“hello”;String s2=“bee”;String s3=“java”;String s4=“brove”;String s5=“bag”;if(s1.indexOf('b')= =0)System.out.println(s1);if(s2.indexOf('b')= =0)System.out.println(s2);if(s3.indexOf('b')= =0)System.out.println(s3);if(s4.indexOf('b')= =0)System.out.println(s4);if(s5.indexOf('b')= =0)System.out.println(s5);} } 10.
public class ppp { public static void main(String args[]){ String s1=“abcdefghi”;int num=0;for(int i=0;i {i=s1.indexof('e',i);num++;
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........}
System.out.print(“ s1=”+s1+“e=”);
if(num= =0)
System.out.println(“ no found”);
else System.out.println(num);
}
}
自考Java語言程序設計
(一)第八章Java異常處理及輸入輸出流簡介課后習題
八、Java異常處理及輸入輸出流簡介
1.列出5個常見的異常。
2.寫出Java語言的異常處理機制的優點。
3.為什么異常處理技術不應該用于常規的程序控制?
4.引起異常產生的條件是什么?
5.異常沒有被捕獲將會發生什么?
6.編寫一個程序,以說明catch(Exception e)如何捕獲各種異常。
7.下面的代碼段中finally語句塊會被執行嗎?
public class ExceptionExam3
{
public static void main(String [] args)
{
try
{
int [] a=new int[3];
System.exit(0);
}
catch(ArrayIndexOutOfBoundsException e)
{System.out.println(“發生了異?!?;}
finally
{System.out.println(“Finally”);}
}
}
8.throws的作用是什么?
9.應在程序的什么地方使用異常處理?
10.下面的代碼有什么錯誤嗎?
class ExceptionExam{?}
throw new ExceptionExam();
11.異常類型匹配的處理方式。程序功能:首先輸出“這是一個異常處理的例子”,然后在你程序中主動地產生一個 ArithmeticException 類型被0 除而產生的異常,并用catch 語句捕獲這個異常。最后通過ArithmeticException類的對象e的方法getMessage 給出異常的具體類型并顯示出來。
12.根據所給創建自定義異常類的使用格式,編寫一個自定義異常的小程序。
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........13.什么叫流?流式輸入輸出有什么特點?
14.Java流被分為字節流、字符流兩大流類,兩者有什么區別?
15.File類有哪些構造函數和常用方法?
16.利用文件輸入輸出流編寫一個實現文件拷貝的程序,源文件名和目標文件名通過命令行參數傳入。
17.編寫一個程序,在當前目錄下創建一個子目錄test,在這個新創建的子目錄下創建一個文件,并把這個文件設置成只讀。
18.位置指針的作用是什么?RandomAccessFile類提供了哪些方法實現對指針的控制?
19.編寫一個程序,從鍵盤輸入一串字符,統計這串字符中英文字母、數字、其他符號的字符數。
20.編寫一個程序,從鍵盤輸入一串字符,從屏幕輸出并將其存入a.txt文件中。采集者退散
21.編寫一個程序,從鍵盤輸入10個整數,并將這些數據排序后在標準輸出上輸出。
參考答案
1.答:內存耗盡、數組下標超出邊界、被0除、非法的方法參數、算法溢出處。來源:考試大的美女編輯們
2.答:(1)Java通過面向對象的方法進行異常處理,把各種異常事件進行分類,體現了良好的層次性,提供了良好的接口,這種機制對于具有動態特 性的復雜提供了強有力的控制方式。(2)Java的異常處理機制使得處理異常的代碼和“常規”代碼分開,減少了代碼的數量,增強了程序的可讀性。(3)Java的異常處理機制使得異常事件可以沿調用棧自動向上傳播,而不是C語言中通過函數的返回值來傳播,這樣可以傳遞更多的信息,并且簡化了代碼的編寫。(4)由于把事件當成事件處理,利用類的層次性我們可以把多個具有相同父類的異常統一處理,也可以區分不同的異常分別處理,使用非常靈活。
3.答:a.異常處理用于不經常發生但通常導致程序終止的情況,因此要求編程人員為編譯器的優化執行實現異常處理。b.常規控制結構的控制流程通常比異常的更為清晰、交流更高。c.在發生異常,并且沒有釋放異常發生之前分配的資源時,堆棧是展開的,所以會出現一些問題。d.“額外的”異常會妨礙真正錯誤類型的異常。這種使程序員更難 以跟蹤大量的異常。
4.答:異常產生的方式有3種。第一種是在某些內部錯誤時,Java虛擬機可以產生異常,該異常不在你的程序控制范圍內,通常不作處理。第二種是由程序代碼中的錯誤引起,這種異常需要你的程序處理。第三種是通過使用throw語句手動生成的異常。
5.答:未捕獲的異常最終會導致程序非正常終止。
6.public class ExceptionExam
{
public static void main(String [] args)
{
try
{
int i=0;
i=3/i;//將產生算術異常。
}
catch(ArithmeticException e)//找到了匹配的異常,執行該catch塊。
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........{
System.out.println(“發生了ArithmeticException異?!?;
}
catch(AarryIndexOutOfBoundsException e)//不是匹配的異常,且不會再捕獲
//異常,如果發生數組索引超出范圍所產生的異常,將執行該catch塊。
{
System.out.println(“發生了AarryIndexOutOfBoundsException異?!?;
}
catch(Exception e)
//前兩個catch塊均無法捕獲try塊中發生的異常時,才會執行該catch塊。
{
System.out.println(“發生了異?!?;
}
finally
{ System.out.println(“執行d Finally”);}
}
}
7.答:無論是出于何種原因,只要執行離開try/catch代碼塊,就會執行finally代碼塊。即無論try是否正常結束,都會執行 finally定義的最后的代碼。如果try代碼塊中的任何代碼或它的任何catch語句從方法返回,也會執行finally代碼塊。但本題中在try代 碼塊中執行了“System.exit(0);”語句,執行了這一語句后,Java虛擬機(JVM)將被終止。那么finally語句塊一定不會被執行。
8.答:在某些情況下,如果一個方法產生自己不處理或無法處理的異常,它就必須在throws子句中聲明該異常。
9.答:通常,可以采用兩種方式來報告錯誤:返回值和異常。在Java中異常處理很常用,雖然返回錯誤代碼在某些情況下是一種有效的方式,但是異常處理可以提供強大的結構化方法來處理異常。所以需要處理代碼中的錯誤時就可以采用異常的方法進行處理。
10.答:ExceptionExam不是繼承(擴展)Throwable的子類,只有Throwable的子類可以由throw拋出。所以,這一段代碼會出錯。
11.public class ExceptionExam1
{
public static void main(String [] args)
{
try
{int i=0;
i=3/i;
}
catch(ArithmeticException e)
{
System.out.println(“異常是:”+e.getMessage());
}
finally
{
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........System.out.println(“finally 語句被執行”);
}
}
}
注意:如果在catch 語句中聲明的異常類是Exception,catch 語句也能正確地捕獲,這是因為Exception 是ArithmeticException 的父類。如果不能確定會發生哪種情況的異常,那么最好指定catch的參數為Exception,即說明異常的類型為Exception。
12.class Excp1 extends Exception
{}
class Excp2 extends Excp1
{}
public class ExceptionExam7
{
public static void main(String [] args)throws Exception
{
try
{
throw new Excp2();
}
catch(Excp2 e)
{
System.out.println(“catch1”);
throw new Excp1();
}
catch(Excp1 e)
{
System.out.println(“catch2”);
throw new Exception();
}
catch(Exception e)
{
System.out.println(“catch3”);
}
finally
{
System.out.println(“finally”);
}
}
}
說明:自定義異常類,關鍵是選擇繼承的超類——必須是Exception或者其子類。用異常代表錯誤,而不要再使用方法返回值。
13.答:所謂流是指同一臺計算機或網絡中不同計算機之間有序運動著的數據序列,Java把這些不同來源和目標的數據都統一抽象為數據流。數據流可分為輸入流和輸出流,輸
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........入流代表從其他設備流入計算機的數據序列,輸出流代表從計算機流向外部設備的數據序列。
流式輸入輸出的特點是數據的獲取和發送沿數據序列的順序進行,即每一個數據都必須等待排在它前面的數據,等前面的數據讀入或送出之后才能被讀寫。所以流和隊列一樣,只能以“先進先出”的方式對其中的數據進行讀寫,而不能隨意選擇讀寫的位置。
14.答:兩者都作為Object類的直接子類,基本輸入流(無效Stream)和基本輸出流(OutputStream)是處理以8位字節為基本單位的字節流類;Reader和Writer類是專門處理16位字符流的類。
15.答:構造函數有:
(1)public File(String pathname):創建一個對應于參數pathname的File類對象。參數pathname是包含目錄和文件名的字符串。如果沒有文件名,則代表目錄。
(2)public File(String parent , String child):該構造函數將pathname分成兩部分parent和child,參數parent表示目錄或文件所在路徑,參數child表示目錄或文件名稱。
(3)public File(File parent, String child):該構造函數與上面一個不同在于將parent的參數類型由String變為File,代表parent是一個已經創建的File類文件對象(指向目錄)。
常用方法有:
(1)public boolean canWrite():返回文件是否可寫。
(2)public boolean canRead():返回文件是否可讀。
(3)public boolean createNewFile():當文件不存在時創建文件。
16.import java.io.*;
class CopyFile{
public static void main(String[] args){
String file1,file2;
int ch = 0;
try {
file1=args[0];
file2=args[1];
File無效Stream fis = new File無效Stream(file1);
FileOutputStream fos=new FileOutputStream(file2);
while((ch=fis.read())!=-1)
fos.write(ch);
fis.close();
fos.close();
}
catch(FileNotFoundException e){
System.out.println(“源文件:未找到!”);
}catch(ArrayIndexOutOfBoundsException e){
System.out.println(“缺少運行參數!”);
System.exit(-1);
}
catch(IOException e){
System.out.println(e.toString());
}
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........}
}
17.答:
import java.io.*;
public class NewFile{
public static void main(String args[]){
File f=new File(“test”);
if(f.exists()&&f.isDirectory())
System.err.println(“目錄:”+f.toString()+“已經存在!”);
else{
if(f.mkdir()){
System.out.println(“目錄”+f.getAbsolutePath()+“創建結束!”);
File f2=new File(f,“my.txt”);
try{
f2.createNewFile();
f2.setReadOnly();
}catch(IOException e){
System.out.println(e.toString());
}
System.out.println(“文件:”+f2.getAbsoluteFile()+“創建結束!”);
}
else
System.out.println(“目錄”+f.getAbsoluteFile()+“創建失敗!”);
}
}
}
18.答:要實現對文件的隨機讀取,也就是在文件的任何位置執行讀寫數據的操作,需要一個指針來指定讀寫的位置。在創建 RandomAccessFile類對象的同時,系統自動創建了一個指向這個文件開頭的指針,當執行讀寫操作后,指針自動指向被讀寫數據之后的第一個字節 處。指針初始值是0,每讀/寫一個字節,指針自動增加1。RandomAccessFile類提供了一些控制指針移動的方法。
public long getFilePointer();獲取當前指針指向文件的位置??荚嚧笳搲?/p>
pulbic void seek(long pos);將指針移動到參數pos指定的位置。
public int skipBytes(int n);指針從當前位置向后移動n個字節位置,并返回指針實際移動的字節數。
19.答:
import java.io.*;
public class Count{
public static void main(String[] args)
{
int x=0,y=0,z=0;
int ch;
try{
while((ch=System.in.read())!='r'){
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')x++;else if(ch>='0'&&ch<='9')y++;else z++;} }catch(IOException e){ System.out.println(e.toString());} System.out.println(“英文字母:”+x);System.out.println(“數字字符:”+y);System.out.println(“其它字符:”+z);} } 20.答:
import java.io.*;public class InFile{ public static void main(String[] args){ int ch;try{ FileOutputStream out=new FileOutputStream(“a.txt”);while((ch=System.in.read())!='r'){ System.out.write(ch);out.write(ch);} out.close();System.out.write('n');}catch(IOException e){ System.out.println(e.toString());} System.out.println(“輸出至文件完畢!”);} } 21.答:
import java.io.*;public class Sort{ public static void main(String args[]){ int a[]=new int[10];byte b[]=new byte[10];int t;String str;
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........System.out.println(“請輸入10個整數:”);
try{
for(int i=0;i<10;i++)
{System.out.print(“No.”+(i+1)+“: ”);
System.in.read(b);
str=new String(b);
str=str.trim();
a[i]=Integer.parseInt(str);
}
}catch(IOException e){
System.out.println(e.toString());
}
catch(NumberFormatException e){
System.out.println(e.toString());
}
for(int i=0;i<9;i++)
for(int j=i+1;j<10;j++)
{
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(int i=0;i<10;i++)
System.out.println(a[i]+“t”);
}
}
自考Java語言程序設計
(一)第九章JavaApplet概述課后習題
九、Java Applet概述
1.下列方法中,哪一個不是Applet的基本方法()
A、init()B、run()C、stop()D、start()
2.在Java中判定Applet的來源的方法有()
A、getcodebase()B、get文檔base()
C、getCodeBase()D、get文檔Bade()
3.下面關于Applet的說法正確的是
A、Applet也需要main方法
B、Applet必須繼承自javawt.Applet
C、Applet能訪問本地文件
D、Applet程序不需要編譯
4.Applet類的直接父類是()
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........()
A.Component類
B.Container類
C.Frame類
D.Panel類
5.判斷:一個Applet編譯后的類名是Test.class,運行此小程序的命令是Java Test。
6.編寫同時具有Applet與Application的特征的程序。具體方法是:作為Application要定義main()方法,并且把 main()方法所在的類定義一個類。為使該程序成為一個Applet,main()方法所在的這個類必須繼承Applet類或JApplet類。www.tmdps.cn/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........A.FlowLayoutB.BorderLayout
C.GridLayoutD.CardLayout
10.編寫程序,創建下面的GUI(不必為各組件提供功能)。考試大收集整理
參考答案
1: false
2:true
3:true
4.true
5:版面管理器
6.圖形用戶界面
7.mouseReleased
8.C
9.B
10.import javawt.*;
public class Chp9_3_A extends Frame{
TextField t=new TextField();
String[] op={“7”,“8”,“9”,“/”,“4”,“5”,“6”,“*”,“1”,“2”,“3”,“-”,“0”,“.”,“=”,“+”};
Button[] btn=new Button[16];
Panel p=new Panel();
public Chp9_3_A(){
setLayout(new BorderLayout());
p.setLayout(new GridLayout(4,4));
for(int i=0;i
btn[i]=new Button(op[i]);
p.add(btn[i]);
}
add(t,BorderLayout.NORTH);
add(p,BorderLayout.CENTER);
setSize(400,300);
}
public static void main(String[] args){
new Chp9_3_A().setVisible(true);
}
}
自考Java語言程序設計
(一)第十二章課后習題
十二、常用組件之一________命令按鈕與標簽框
1.判斷:標簽是是一個容器。()
2.判斷:在Swing用戶界面的程序設計中,容器可以被添加到其它容器中去。()
3.用戶不能修改的文本稱為_______。
4.關于awt和swing說法正確的是:來源:考試大
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........A、awt在不同操作系統中顯示相同的風格。B、swing在不同的操作系統中顯示相同的風格 C、javawt的子類
D、awt和swing都支持事件模型
5.下列_________用戶圖形界面組件在軟件安裝程序中是常見的。a.滑塊
b.進度條來源:考試大 c.對話框 d.標簽
6.包含可單擊按鈕的類的Java類庫是__________。a.AWT b.Swing c.二者都有來源:www.tmdps.cn d.二者都沒有
7.下面的__________用戶界面組件不是容器。a.JScrollPane b.JFrame考試大-全國最大教育類網站(www.tmdps.cn)c.JWindows d.JScrollBar 8.創建下面的GUI,顏色列表框為紅色、綠色和藍色(不必為各組件提供功能)。參考答案 1.false 2.true 3.標簽 4.B D 5.B 6.C 7.D 8.參考程序如下: import javawt.*;public class Chp9_3_B extends Frame{ Choice ch;Checkbox bg,fg;Button btnOK,btnCancel;Panel p,p1,p2;public Chp9_3_B(){ p=new Panel();p.setLayout(new GridLayout(2,1));p1=new Panel();p2=new Panel();p1.setLayout(new FlowLayout());p2.setLayout(new FlowLayout());ch=new Choice();ch.add(“紅色”);
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........ch.add(“綠色”);ch.add(“藍色”);bg=new Checkbox(“背景”);fg=new Checkbox(“前景”);p1.add(bg);p1.add(fg);btnOK=new Button(“確定”);btnCancel=new Button(“取消”);p2.add(btnOK);p2.add(btnCancel);p.add(p1);p.add(p2);add(ch,BorderLayout.NORTH);add(p,BorderLayout.CENTER);setSize(400,300);} public static void main(String[] args){ new Chp9_3_B().setVisible(true);} }
自考Java語言程序設計
(一)第十三章課后習題
十三、常用組件之二 _______單行文本框與多行文本框,單選框和復選框
1.判斷:列表對象總包含滾動條。()
2.判斷:面板的默認管理器是BorderLayout。
3.____________類用于創建一組單選按鈕。來源:考試大
4.欲編寫如下圖的一個界面,用于顯示用戶指定的圖像: 如果在區域A中只能放置一個
AWT組件,從各組件的本來功能角度考慮,最好使用哪種組件:
A、TextArea
B、Panel
C、Applet
D、Canvas
5.Java應用程序中的默認外觀是_________。
A.Motif
B.Windows
C.METAl
6.創建下面的GUI,要求在文本框中輸入分數,單擊“求和”按鈕后在結果文本框中顯示總分。
7.編寫一個將華氏溫度轉換為攝氏溫度的程序。應從鍵盤輸入華氏溫度,然后通
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........過文本顯示轉換后的攝氏溫度。使用下面的公式進行溫度轉換:
攝氏溫度=5/9Χ(華氏溫度-32)
8.編寫一個程序,使用戶能夠使用鼠標在applet中繪制一個矩形。按住鼠標左鍵,確定矩形的左上角,然后拖動鼠標,在需要的位置(即矩形右下角)釋放鼠標。另外,在狀態欄中顯示矩形面積。
參考答案
1.false
2.true
3.CheckboxGroup
4.D
5. C
6.參考程序如下:
import javawt.*;來源:考試大
import javawt.event.*;
public class Chp9_3_C extends Frame implements ActionListener{
TextField textField1,textField2,textField3;
Button button1=new Button(“求和”);
Panel panel1,panel2;
public Chp9_3_C(){
textField1=new TextField();
textField2=new TextField();
textField3=new TextField();
panel1=new Panel();
panel2=new Panel();
panel1.setLayout(new GridLayout(3,2));
panel2.setLayout(new FlowLayout());
panel1.add(new Label(“數學: ”));
panel1.add(textField1);
panel1.add(new Label(“英語: ”));
panel1.add(textField2);
panel1.add(new Label(“總分: ”));
panel1.add(textField3);
panel2.add(button1);
add(panel1,BorderLayout.CENTER);
add(panel2,BorderLayout.SOUTH);
button1.addActionListener(this);
setSize(300,200);
setVisible(true);
}
public static void main(String[] args){
new Chp9_3_C();
}
public void actionPerformed(ActionEvent e){
int n1,n2,sum;
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........n1=Integer.parseInt(textField1.getText());n2=Integer.parseInt(textField2.getText());sum=n1+n2;textField3.setText(“"+sum);} } 6.參考程序如下: import javawt.*;import javawt.event.*;public class Chp9_3_D extends Frame{ TextField textField1,textField2;Button button1;public Chp9_3_D(){ textField1=new TextField(30);textField2=new TextField(30);button1=new Button(”轉換“);setLayout(new FlowLayout());add(new Label(”華氏溫度:“));add(textField1);add(new Label(”攝氏溫度:“));add(textField2);textField2.setEditable(false);add(button1);setSize(400,300);pack();button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ button1_actionPerformed(e);} });addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });} public static void main(String[] args){ new Chp9_3_D().setVisible(true);} private void button1_actionPerformed(ActionEvent e){ double d=Double.parseDouble(textField1.getText());double h=5.0/9.0*(d-32);textField2.setText(”“+h);}
更多優質自考資料盡在百度貼吧自考樂園俱樂部
(http://tieba.baidu.com/club/5346389)歡迎?加入...歡迎?交流...止不住的驚喜等著你.........}
7.參考程序如下:
import javapplet.Applet;
import javawt.*;
import javawt.event.*;
public class Chp9_3_E MouseListener,MouseMotionListener{
int x1,y1,x2,y2;
public void init(){
addMouseListener(this);
addMouseMotionListener(this);
}
public void paint(Graphics g){
g.drawRect(x1,y1,x2,y2);
int area=Math.abs(x2-x1)*Math.abs(y2-y1);
showStatus(”矩形面積: "+area);
}
//implementation of MouseListener
public void mousePressed(MouseEvent e){
x1=e.getX();
y1=e.getY();
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
//implementation of MouseMotionEvent
public void mouseDragged(MouseEvent e){
x2=e.getX();
y2=e.getY();
repaint();
}
public void mouseMoved(MouseEvent e){}
}
extends Applet implements
第三篇:C語言程序設計教程課后習題答案
C語言程序設計教程課后習題答案
第一章 C語言程序設計概述 -習題答案 算法的描述有哪些基本方法?
答
1、自然語言
2、專用工具C語言程序的基本結構是怎樣的?舉一個例子說明。
答
1、C語言程序由函數構成;
2、“/*”與“*/”之間的內容構成C語言程序的注釋部分;
3、用預處理命令#include、#define可以包含有關文件或預定義信息;
4、大小寫字母在C語言中是有區別的;
5、除main()函數和標準庫函數外,用戶也可以自己編寫函數,應用程序一般由多個函數組成,這些函數指定實際所需要做的工作。C語言有什么特點?
答
1、具有結構語言的特點,程序之間很容易實現段的共享;
2、主要結構成分為函數,函數可以在程序中被定義完成獨立的任務,獨立地編譯代碼,以實現程序的模塊化;
3、運算符豐富,包含的范圍很廣;
4、數據類型豐富;
5、允許直接訪問物理地址,即可直接對硬件進行損傷,實現匯編語言的大部分功能;
6、限制不太嚴格,程序設計自由度大,這樣使C語言能夠減少對程序員的束縛;
7、生成的目標代碼質量,程序執行效率高,同時C語言編寫的程序的可移植性好?!镏赋龊戏ㄅc不合法的標識符命名。
答
AB12--√ leed_3--a*b2--× 8stu--× D.K.Jon--× EF3_3--√ PAS--√ if--× XYZ43K2--√ AVE#XY--× _762--√ #_DT5--× C.D--×說明下列Turbo C熱鍵的功能。
答
F2:源文件存盤 F10:調用主菜單 F4:程序運行到光標所在行(用于調試程序)Ctrl+F9:編譯并鏈接成可執行文件 Alt+F5:將窗口切換到 DOS 下,查看程序運行結果。說明下列Turbo C方式下輸入并運行下列程序,記錄下運行結果。
①main()
{printf(“********************n”);printf(“ welcome you n”);printf(“ very good n);printf(”********************n“);} ②main()
{ int a,b,c,t;printf(”please input three numbers;“);scanf(”%d,%d,%d“,&a,&b,&c);/*教材S是錯誤的*/ t=max(max(a,b),c);printf(”max number is:%dn“,t);} int max(int x, int y){ int z;if(x>y)z=x;else z=y;return(z);} 答
運行結果:
******************** welcome you very good ******************** 運行結果:
please input three numbers;3,1,4 /*左側下劃線內容為鍵盤輸入*/ max number is:4 7 一個C程序是由若干個函數構成的,其中有且只能有一個___函數。
答
main()8 在Turbo C環境下進行程序調試時,可以使用Run下拉菜單的___命令或按___鍵轉到用戶屏幕查看程序運行結果。
答
1、User screen
2、Alt+F5 9 ★C語言對標識符與關鍵字有些什么規定?
答
1、標識符用來表示函數、類型及變量的名稱,它是由字母、下劃線和數字組成,但必須用字母或下劃線開頭。
2、關鍵字是一種語言中規定具有特定含義的標識符,其不能作為變量或函數名來使用,用戶只能根據系統的規定使用它們。C源程序輸入后是如何進行保存的?
答
是以C為擴展名保存的純文本文件。
第二章 C語言程序的基本數據類型與表達式 -習題答案 ★指出下列常數中哪些是符合C語法規定的。
答
''--× '101'--× ”“--× e3--× 019--√ 0x1e--√ ”abn“--√ 1.e5--×(2+3)e(4-2)--× 5.2e2.5--×請找出下列程序中的錯誤,改正后寫出程序運行結果。
①void main(){int x,y=z=5,aver;x=7 AVER=(x+y+z)/3 printf(”AVER=%dn“,aver);} ②void main()
{ char c1='a';c2='b';c3='c';int a=3.5,b='A' printf(”a=%db='“endn”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);} 答
main(){int x,y=5,z=5,aver;x=7;aver=(x+y+z)/3;printf(“AVER=%dn”,aver);}
運行結果:AVER=5 ②main()
{ char c1='a', c2='b', c3='c';int a=3,b='A';printf(“a=%d,b='%c'”end“n”,a,b);printf(“a%cb%cbc%ctabcn”,c1,c2,c3);}
運行結果:a=3,b='A'“end”
aabcc abc 3 寫出下列賦值的結果,表格中寫了數值的是要將它賦給其他類型的變量,將所有的空格填上賦值后的數據(實數保留到小數點后兩位)。int 99
-1 char 'h'
unsigned int
float
55.78
long int
答 int 99 104 66 55 68-1 char 'c' 'h' 'B' '7' 'D'
unsigned int 99 104 66 55 68 65535
float 99.00 104.00 66.00 55.78 68.00-1.00
long int 99 104 66 55 68-1
★寫出程序運行結果。
①void main(){int i,j;i=8,j=10;printf(“%d,%d,%d,%dn”,i,j,++i,j++);} ②main()
{ int a=1,b=2,c=30;;printf(“%d,%d,%d,%dn”,a=b=c,a=b==c,a==(b=c),a==(b==c));} 注意:a=b=c,a=b==c之間應為逗號,教材有誤 答
運行結果: 9,11,9,10 運行結果: 30,1,0,0
③void main()
{int a=10,b=20,c=30,d;d=++a<=10||b-->=20||c++;printf(“%d,%d,%d,%dn”,a,b,c,d);}
答
運行結果: 11,19,30,1
★寫出下面表達式的值(設a=10,b=4,c=5,d=1,x=2.5,y=3.5)。⑴a%=(b%=3)
⑵n++,a+=a-=a*=a ⑶(float)(a+c)/2+(int)x%(int)y ⑷a*=b+c ⑸++a-c+b++ ⑹++a-c+++b ⑺a
⑼a+b,18+(b=4)*3,(a/b,a%b)
⑽x+a%3*(int)(x+y)%2/4+sizeof(int)⑾a
答
⑴0 ⑵0 ⑶9.500000 ⑷90 ⑸10 ⑹10 ⑺'A' ⑻2 ⑼4.5 ⑽1 ⑾0 ⑿20 ⒀0 下列每組表達式中,被執行后結果完全等價的是哪些(設a、b、m是已被賦值的整型變量)?
①m=(a=4,4*5)與m=a=4,4*5 ②(float)(a/b)與(float)a/b ③(int)a+b與(int)(a+b)④m%=2+a*3與m=m%2+a*3 ⑤m=1+(a=2)+(b=3)與a=2,b=3,m=1+a+b 答
①前面是賦值表達式,而后面的是一個逗號表達式,所以一定不同;
②前面的表達式中a/b結果為一整數,結果已經取整,精度可能受到影響,之后強制float后才為浮點型,后面的是先將a轉換為float后再與b相除,其值保證了精度,所以不同。
③因為a、b均為整數,其前后兩個表達式的計算結果是一致的。
④前一表達式是一算術表達式,而后者為一賦值表達式,此為一點不同;另外,前一表達式的m只被賦過一次值,后一表達式中的m曾兩次被賦值,第一次賦值時與第一表達式中的值一致,第二次賦值后即不再相同。⑤前后表達式的計算結果應該是一致的:a=2, b=3, m=6 7 條件表達式x>0?x:-x的功能是什么?
答
如果x的值是一正數,則表達式的值為x值;如果x的值是一非正數,則表達式的值為-x。其實該表達式的值即為x的絕對值,C語言中提供了一個函數fabs(x)即可完成此功能,該函數包含在math.h頭文件中。用一個條件表達式描述從a、b、c中找出最大都賦給max.答
max=a>(b>c?b:c)?a:(b>c?b:c);9 ★若x為int型變量,則執行以下語句后x的值為()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24 答 B.10 ★若有以下類型說明語句: char w;int x;float y;double z;則表達式w*x+z-y的結果為()類型。A.float B.char C.int D.double 答 D.第三章 順序結構程序設計 -習題答案 變量k為float類型,調用函數scanf(“%d”,&k),不能使變量k得到正確數值的原因是___。
答
格式修飾符與變量類型不一致。因為%d輸入的數據類型應該為十進制整數,而&k為占用4個字節的float類型變量的地址?!颽=1234,b=12,c=34,則執行“printf(“|%3d%3d%-3d|n”,a,b,c);”后的輸出是___。
答
|1234 1234 |
分析如下:
①%3d為右對齊輸出變量,且指定輸出變量的值寬度為3個字符位,如果變量實際位數小于3,則左端補空格,如果變量實際位數大于3,則按實際長度輸出,不受限制。
②%-3d為左對齊輸出變量,在輸出變量時,如是變量實際位數小于3,則在右端補空格,否則按實際輸出?!镌O有“int a=255,b=8;”,則“printf(“%x,%on”,a,b);”輸出是___。答 ff,10 ①如果“printf(“%X,%on”,a,b);”則輸出為FF,10。說明在輸出十六進制字母時,其大小寫受格式修飾符的限制,如果是“%x”則輸出小寫,如果是“%X”則輸出大寫。
②如果希望在輸出十六進制時輸出前導符0x或0X,則以上輸出語句應改“printf(“%#x,%on”,a,b);”為或“printf(“%#X,%on”,a,b);”。本條解釋不必須掌握?!镆韵鲁绦蜉敵龅慕Y果是___。main(){ int a1=1,a2=0,a3=2;printf(“%d,%d,%dn”,a1,a1+a2+a3,a3-a1);} 答 1,3,1 5 printf函數中用到格式符%5s,其中5表示輸出字符占用5列。如果字符串長度大于5,則按___輸出;如果字符串長度小于5,則按___輸出。
答
①實際 ②左端補空格 6 ★已定義變量如下: int a1,a2;char c1,c2;若要求輸入a1、a2、c1和c2的值,正確的輸入函數調用語句是___。
答
scanf(“%d,%d,%c,%c”,&a1,&a2,&c1,&c2);7 輸入兩個整型變量a、b的值,輸出下列算式以及運算結果___。a+b、a-b、a*b、a/b、(float)a/b、a%b 每個算式占一行。如a=10,b=5,a+b輸出為:10+5=15 答
設int a=10,b=5;以下為輸出語句及結果: ①printf(“%d+%d=%dn”,a,b,a+b);10+5=15 ②printf(“%d-%d=%dn”,a,b,a-b);10-5=5 ③printf(“%d*%d=%dn”,a,b,a*b);10*5=50 ④printf(“%d/%d=%dn”,a,b,a/b);10/5=2 ⑤printf(“%(float)d/%d=%fn”,a,b,(float)a/b);(float)10/5=2.000000 ⑥printf(“%d%%%d=%dn”,a,b,a%b);10%5=0 8 ★輸入一個非負數,計算以這個數為半徑的圓周長和面積。答
#define PI 3.1415926 main(){ float r,l,area;printf(“Input a positive:”);scanf(“%f”,&r);l=2*PI*r;area=PI*r*r;printf(“l=%ftarea=%fn”,l,area);} 9 輸入任意一個3位數,將其各位數字反序輸出(例如輸入123,輸出321)。
答
main(){ int x,y;printf(“Input a number(100-999):”);scanf(“%d”,&x);y=100*(x%10)+10*(x/10%10)+x/100;/*注意分析此處算法*/
第四篇:c語言程序設計課后習題答案 第7章
/*練習7-1*/ #include scanf(“%d”,&a[i]); sum=sum+a[i]; } ave=1.0*sum/n;printf(“ave=%.2fn”,ave);} /*練習7-2*/ #include int a[10],n,i;printf(“enter n:n”);scanf(“%d”,&n);printf(“enter %d ge zheng shu:n”,n);for(i=0;i printf(“第%d個:n”,i+1); scanf(“%d”,&a[i]); printf(“倒序:n”); while(a[i]!=0) { printf(“%d”,a[i]%10); a[i]=a[i]/10; } printf(“n”);} } /*練習7-3*/ #include int a[5],x,i,k=0;printf(“enter 5 ge zheng shu:n”);for(i=0;i<5;i++) scanf(“%d”,&a[i]);printf(“enter x:n”);scanf(“%d”,&x); for(i=0;i<5;i++) if(a[i]==x) { printf(“xia biao wei : %dn”,i); k=1; } if(k==0) printf(“Not Foundn”);} /*練習7-4*/ #include int a[10],n,i,k=0,x,max;printf(“enter n:n”);scanf(“%d”,&n);printf(“enter %d ge zheng shu:n”,n);for(i=0;i scanf(“%d”,&a[i]);max=a[0];for(i=1;i<=n-1;i++) if(max { max=a[i]; k=i; } printf(“max=%d xia biao=%d”,max,k); x=a[n-1]; a[n-1]=a[k]; a[k]=x; printf(“n”); for(i=0;i printf(“ %d ”,a[i]); printf(“n”);} /*練習7-11*/ #include i++;str[i]='
主站蜘蛛池模板:
精品午夜福利在线观看|
人妻系列无码专区av在线|
人妻少妇偷人无码精品av|
人妻熟妇乱又伦精品视频app|
久久综合色一综合色88|
欧亚乱熟女一区二区三区在线|
亚洲av无码国产一区二区|
亚洲熟妇久久国内精品|
亚洲中文字幕无码一去台湾|
欧美牲交a欧美牲交aⅴ免费|
国产成人啪精品视频免费网|
2020天堂在线亚洲精品专区|
日韩免费无码一区二区视频|
a∨无码天堂av|
丁香五月激情综合亚洲|
亚洲乱色熟女一区二区三区丝袜|
中文字幕无码日韩专区免费|
动漫av永久无码精品每日更新|
日产无码中文字幕av|
色欲麻豆国产福利精品|
亚洲欧洲日产国无高清码图片|
亚洲精品毛片av一区二区三区|
东北老女人高潮疯狂过瘾对白|
伊人久久精品亚洲午夜|
波多野结衣美乳人妻hd电影欧美|
久久69精品久久久久久hb|
日本工口里番无遮█彩色|
精品久久久久久久久久中文字幕|
亚洲中国久久精品无码|
久热这里只精品99国产6-99re视…|
四虎永久在线精品免费观看|
国产女人乱人伦精品一区二区|
偷窥日本少妇撒尿chinese|
国产国拍精品av在线观看|
久久午夜夜伦鲁鲁片免费无码影视|
国产在线观看无码免费视频|
人妻人人澡人人添人人爽人人玩|
插插插精品亚洲一区|
亚洲av永久无码天堂网手机版|
中文字幕日韩精品无码内射|
久久精品国产99国产精2020丨|