Ⅰ java語言程序設計兩道練習題。謝謝!
第一題有問題:1、創建Person介面(即「人」),它有setData()和getData()方法對「人」屬性name、sex和birthday賦值和獲得這些屬性組成的字元串信息。
問題是:你說要創建一個人(介面),然後裡面有方法對人的屬性進行賦值?這怎麼可能呢,介面是沒有成員變數(屬性)的,怎麼能賦值?介面里只能有常量。
第二題可以答一下:
package pillar;
public class Pillar { private Geometry buttom;
private double height;
public Pillar() {
// TODO Auto-generated constructor stub
}
public Pillar(Geometry button,double height){
this.buttom = button;
this.height = height;
}
public double getVolume(){
return this.buttom.getArea()*height;
}
public Geometry getButtom() {
return buttom;
}
public void setButtom(Geometry buttom) {
this.buttom = buttom;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
------------------------------------------------類分割線---------------------------------------------------------
package pillar;
public interface Geometry { double getArea();
}
------------------------------------------------類分割線---------------------------------------------------------
package pillar;
public class Circle implements Geometry { private double r;
public Circle() {
// TODO Auto-generated constructor stub
}
public Circle(double r) {
this.r = r;
}
public double getArea() { return Math.PI*r*r;
}
public double getR() {
return r;
}
public void setR(double r) {
this.r = r;
}
}
------------------------------------------------類分割線---------------------------------------------------------
package pillar;
public class Rectangle implements Geometry { private double width;
private double height;
public Rectangle() {
// TODO Auto-generated constructor stub
}
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() { return this.width*this.height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
------------------------------------------------類分割線---------------------------------------------------------
package pillar;
public class TestPillar {
/** * @param args
*/
public static void main(String[] args) {
Circle c = new Circle(5);
Rectangle r = new Rectangle(3,4);
Pillar p1 = new Pillar(c,6);
Pillar p2 = new Pillar(r,6);
System.out.println("圓的體積:"+p1.getVolume()+"\t矩形的體積:"+p2.getVolume());
}
}
Ⅱ JAVA程序設計復習題目
4、AD錯誤原因:floatx;y;定義多個變數應該用,隔開,修改後:floatx,y;
charch1=』m』,ch2=』』;是轉義字元
5、A錯誤原因:B.1.5e-4F後邊的F表示是floatC.abcf字元串D.Float.MIN_VALUEfloat的最小值
6、D錯誤原因:A.inta=6;已經說了定義a為int類型,再定義就重復B.a==3;雙==表示比較C.a=3.2f;末尾的f表示float類型
7、C錯誤原因:C.『a』=8兩邊都是變數
8、B錯誤原因:A.類具有封裝性,所以類的數據是不能被訪問的數據可以被訪問
C.聲明一個類時,必須用public修飾符不是必需的
D.每個類中,必須有main方法,否則程序無法運行不是每個類都要有
9、A錯誤原因:
作用域當前類同包子孫類其他
public√√√√
protected√√√×
default√√××
private√×××
不寫時默認為default。
10、C
A.intfun(inta,floatb){}floatfun(inta,floatb){}方法重載跟返回值無關
B.intfun(inta,floatb){}floatfun(intx,floaty){}方法重載跟返回值無關,跟參數類型和參數個數有關
D.floatfun1(inta,floatb){}floatfun2(inta,floatb){}方法重載就是方法名相同
我說的也未必都對
Ⅲ 求大量JAVA習題!!!急!!!(不是編程題)
注意:還不是完整的文檔,太長了不能全帖完。要的話找我!^_^
《Java程序設計》練習題
一、判斷題
1、 Java語言採用面向對象的思想編程,具有跨平台、分布式、多線程等優點。 ( )
2、 一個Java源程序可有多個類,但只僅有一個public類,而且程序名與public類名相同。 ( )
3、方法中的形參可以和方法所屬類的屬性同名。 ( )
4、介面無構造器,不能有實例,也不能定義常量。 ( )
5、利用File對象可以判斷一個文件或目錄是否存在。 ( )
6、JFrame,JPanel,JApplet和JButton四種組件都屬於容器組件。 ( )
7、BorderLayout是面板的預設布局管理器。 ( )
8、BorderLayout最多可以使用5個組件。 ( )
9、一個面板(JPanel)不能被加入另一個面板(JPanel)中。 ( )
10、菜單需要一個JMenuBar對象,以使他們能被添加到JFrame。 ( )
11、線程可以用yield使同優先順序的線程運行。 ( )
12、System.in是標准輸入流,能用read方法讀取鍵盤的輸入。 ( )
13、數據流就是數據通信通道,指在計算機的輸入輸出之間運動的數據序列。( )
二、填空題
1、設x,y,z的值分別為ture、false和false,試計算下列邏輯表達式的值:
(1) x &&y||!z&&ture (2) !x||!y&&!z
(3) (!x&&!y)||(!y&&!z) (4) x&&y||true&&!z
2、求下面表達式的值:
(1) 已知x=2、y=6、z=5.0,求x+(int)y/2*z%4
(2) 已知x=123,求x/100+x%100/10+x%10
(3) 已知x=160、y=2.8、z=5,求(byte)x +(int)y+(float)z;
(4) 設 int x=17,y=5; 執行語句 x%=x++/--y 後x的值為 。
(5) 設 int a=7,b=6,c=5;,表達式 (a+b)>(c*c)&&b==c||c>b 的值為 。
(6) 設 int a=3,b=5,c=7;,表達式a>c||c>b!=0&&c==b+a 的值為 。
3、下列表達式中n和x被賦值為多少?
int n=0;
int x=1;
n=x++ + x++; //這里n= , x=
n=n++ - x--; //這里n= , x=
n=x-- + -x++; //這里n= , x=
n=++x + x++; //這里n= , x=
4、使用 方法為組件設置布局管理器,JFrame的預設布局管理器是 ,內容面板的預設布局管理器是 。
5、寫出4個常見的異常例子: 、 、 和 。重新拋出一個異常用 語句。
6、線程通過 方法可以休眠一段時間,然後恢復運行,當 時,線程進入死亡狀態。
7、編寫一個線程可以用 和 來實現。
8、創建文件(c:\test.txt)對象的語句是 ,DataInputStream對象提供 方法可以按行讀取文件內容。
9、Container 的________方法可以將_______組件加入容器。
10、在執行Java線程的程序中,程序通過調用_______方法啟動線程,隨後又調用________方法。
11、使用 方法為組件設置布局管理器,JFrame的預設布局管理器是 ,內容面板的預設布局管理器是 。
12、Java.swing.JFrame.getContentPane()的返回類型是 。
13、數據越界拋出的異常類是 ,整數除零拋出的異常類是 ,算術溢出拋出的異常類是 。
三、選擇題
1、 下面哪些是不合法的變數名稱? ( )
A) 2D B) True C) _name D) T1 E) while-ture
2、下列變數定義不正確的是: ( )
A) boolean status=false; B) float d = 45.6;
C) char c = 「a」; D) int k = 1+』1』; E) float f=1/4;
3、下列數組的定義不合法的是: ( )
A) char c[][]=new char[2][3];
B) char c[][]=new char[6][];
C) char [][]c=new char[3][3];
D) char [][]c=new char[][4];
E) int []a[] = new int[10][10];
4、對於下列代碼:
public class Example{
String str=new String("hello");
char ch[]={'d','b','c'};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.println(ex.str+"and"+ex.ch[0]);
}
public void change(String str,char ch[]){
str="world";ch[0]= 'a';
}
}
輸出結果是: ( )
A) hello and d B) hello and a
C) world and d D) world and a
5、下列說法哪個是正確的? ( )
A) 子類不能定義和父類同名同參數的方法
B) 子類只能繼承父類的方法,而不能重載
C) 重載就是一個類中有多個同名但有不同形參和方法體的方法
D) 子類只能覆蓋父類的方法,而不能重載
6、如果一個程序段中有多個catch,則程序會按如下哪種情況執行? ( )
A) 找到合適的例外類型後繼續執行後面的catch
B) 找到每個符合條件的catch都執行一次
C) 找到合適的例外類型後就不再執行後面的catch
D) 對每個catch都執行一次
7、以下哪一項不是File類的功能: ( )
A) 創建文件
B) 創建目錄
C) 刪除文件
D) 拷貝文件
8、下列說法哪個是正確的? ( )
A) BorderLayout是面板的預設布局管理器
B) 當滑鼠指針位於一個GUI組件的邊上時,發生一個MouseOver事件
C) 一個面板(Jpanel) 不能被加入到另一個面板(Jpanel)中
D) 在BorderLayout中,添加到NORTH區的兩個按鈕將並排顯示。
9、在java程序中,下列關於線程的說法錯誤的是: ( )
A) run方法是運行線程的主體
B) 多個進程運行時執行順序是按順序執行的
C) 如果線程死亡,它便不能運行
D) 在java中,高優先順序的可運行線程會搶占低優先順序線程
10、關於JDBC訪問資料庫的說法錯誤的是: ( )
A) 建立資料庫連接時,必須載入驅動程序,可採用Class.forName()實現
B) 用於建立與某個數據源的連接可採用DriverManager類的getConnection方法
C) 建立資料庫連接時,必須要進行異常處理
D) JDBC中查詢語句的執行方法必須採用Statement類實現
四、程序閱讀題
1、閱讀下面的程序,程序保存為Test.java:
1) public class Test
2) {
3) public static void main(String[] args)
4) {
5) System.out.println(args[2]);
6) }
7) }
以上程序經編譯後用java Test 1 2 3 運行得到的輸出結果是什麼?
2、閱讀下面的程序:
① public class Test{
② public static void main(String[] a){
③ int i = Integer.parseInt(a[0]);
④ switch (i) {
⑤ case 1:System.out.println("Frist season");break;
⑥ case 2:System.out.println("Second season");
⑦ case 3:System.out.println("3th season");break;
⑧ case 4:System.out.println("Last season");
⑨ }
⑩ }
⑪ }
上面的程序編譯是否成功?如果編譯出錯,指出哪行出錯,並說明理由;如果編譯正確,用java Test 2 運行得到的輸出結果是什麼?
3、閱讀下面的程序:
① public class Test{
② public static void main(String[ ] args) {
③ int x,y=2,i=0,j=0;
④ if(args.length<2) System.exit(-1);
⑤ x = Integer.parseInt(args[1]);
⑥ switch(x){
⑦ case 1:switch(y){
⑧ case 1:i++;break;
⑨ case 2:j++;break;
⑩ default:i++;j++;
⑪ }
⑫ case 2:i++;j++;break;
⑬ default:i++;j++;
⑭ }
⑮ System.out.println("i="+i);
⑯ System.out.println("j="+j);
⑰ }
⑱ }
上面的程序編譯是否成功?如果編譯出錯,指出哪行出錯,並說明理由;如果編譯正確,用java Test 1 2 3 運行得到的運行結果是什麼?
4、閱讀下面的程序,程序保存為Test.java:
1) public class Test
2) {
3) short mValue;
4) public static void main(String[] args)
5) {
6) int a = 32;
7) int b = 56;
8) Test os = new Test(a+b);
9) os.Show( );
10) }
11) protected Test(short aValue) { mValue = aValue; }
12) public void Show( ) { System.out.println(mValue); }
13) }
上面的程序編譯是否成功?如果編譯出錯,指出哪行出錯,並說明理由;如果編譯正確,運行結果是什麼?
5、閱讀下面的程序:
class test
{
public static void main(String[] args)
{
int i = 1;
int All = 0;
for (;i<=10;i++)
{
if (i%6==0) break;
if(i%2==0) {i=i+2;continue;}
All = All + i;
}
System.out.println(All);
}
}
上面的程序編譯是否成功?如果編譯出錯,指出哪行出錯,並說明理由;如果編譯正確,運行結果是什麼?
6、閱讀下面的程序,程序保存為Test.java:
1) public class Test
2) {
3) public static void main(String[] args)
4) {
5) int i = 100;
6) int j = 0;
7) boolean b = true;
8) while (b)
9) {
10) if (b||(i<50)) b = false;
11) else b = true;
12) j=j+1;
13) i=i-1;
14) }
15) System.out.println(j);
16) }
17) }
上面的程序經編譯,運行後輸出的結果是什麼?
7、閱讀下面的程序:
1) public class test
2) {
3) public static void main(String argv[])
4) {
5) Bird b = new Bird();
6) b.Fly(3);
7) }
8) }
9) class Bird
10) {
11) static int Type = 2;
12) private void Fly(int an_Type)
13) {
14) Type = an_Type;
15) System.out.println("Flying..."+Type);
16) }
17) }
上面的程序編譯是否成功?如果編譯出錯,指出哪行出錯,並說明理由;如果編譯正確,運行結果是什麼?
8、閱讀下面的程序:
1) abstract class Base{
2) abstract public void myfunc();
3) public void another(){
4) System.out.println("Another method");
5) }
6) }
7) public class Abs extends Base{
8) public static void main(String argv[]){
9) Base b = new Abs();
10) b.another();
11) }
12) public void myfunc(){
13) System.out.println("My Func");
14) }
15) public void another(){
16) myfunc();
17) }
18) }
以上程序經編譯後,運行結果是什麼?
9、閱讀下面的程序:
1) class Super{
2) public int i=0;
3) public Super(){
4) i=1;
5) }
6) }
7) public class Sub extends Super{
8) public Sub(){
9) i=2;
10) }
11) public static void main(String args[]){
12) Sub s=new Sub();
13) System.out.println(s.i);
14) }
15) }
上面的程序經編譯後,運行結果是什麼?
10、閱讀下面的程序,程序保存為Test.java:
1) public class Test {
2) public static void main(String[ ] args) {
3) int index=0;
4) while (index<=100) {
5) index+=10;
6) if (index==40)
7) break;
8) System.out.println("The index is "+index);
9) }
10) }
11) }
上面的程序經編譯,運行後輸出的結果是什麼?
五、問答題
1、 設int類型變數x和y分別初始化為3和100,下列語句的循環體共執行幾次?執行完下列語句後x和y的值分別是多少?
(1) while(x<=y) x=2*x;
(2) while(y/x>5) if(y-x>25) x=x+1; else y=y/x;
(3) do{x=2*x;} while(x<y);
(4) do{x=y/x;y=y-x;}while(x>=y);
(5) do{y=y/x-1; if(y>=x) y=x;} while(y>=1);
2、簡述對象、類的概念。
3、簡述封裝、繼承性和多態性的概念。
4、根據以下的設計要求編寫java源代碼。
類名: Circle
實例數據(均為private):
radius(double) //圓的半徑
方法:
構造方法(沒有參數,設置radius的值為10.0)
setRadius(有一個double參數,將radius的值設為這個新值),
getRadius (沒有參數,返回radius的值)
sameSize(有一個參數,是另一個Circle對象的引用,如果兩個Circle對象的radius的差小於0.001,則返回true)
5、下面的代碼使用上題的Circle類,請回答下面的問題:
public class CircleTester {
public static void main(String[] args) {
Circle c1,c2,c3;
c1 = new Circle();
c2 = new Circle();
System.out.println(「are same is: 「+c1.sameSize(c2));
c2.setRadius(20.0);
compare.reset();
System.out.println(「are same is: 「+c1.sameSize(c2));
}
}
問題:
(1) 共創建了幾個Circle對象?
(2) 程序運行的結果是什麼?
6、假設已有一個ArrayMethods 類,包含以下的方法:
public static void replace(double[] a, int p, double v)
將數組a中下標為p的元素的值替換為v.
public static void fill(double[] a, int p, double v)
將數組a中的前p個元素用value值填充(即將數組a的前p個元素的值,設成v),如果數組的長度小於p,則全部元素都設成v
public static void display(double[] a)
在屏幕上顯示數組a的內容
現在假設你在main()方法中已經聲明了如下變數:
double[] array1={4.5, 6.0, 0.1, 2.2};
double[] array2;
double num1;
int pos=3;
要求對下面的3組語句,先回答是否合法(即沒有編譯錯誤),如果是合法的,請描述程序運行的效果,如果不合法,請說明理由.
1) num1 = array1[2];
ArrayMethods.replace(array1, pos, num1);
ArrayMethods.display(array1);
2) num1 = array1[0];
ArrayMethods.fill(array1, pos, num1);
ArrayMethods.display(array1);
3) num1 = array1[1];
array2=new double[num1];
ArrayMethods.display(array2);
六、編程題
1、分別利用for、while、do~while編寫計算正整數n1到n2的累加和。
2、編寫一個編程,給定一個t的值(t的值也可通過命令行輸入),按下式計算y值並輸出,要求分別寫作if語句和switch語句。
t2-1 0≤t<1
t3-2•t-2 1≤t<3
y= t2-t•sint 3≤t<5
t+1 5≤t<7
t-1 其它
3、設計一個類TestArraySum,定義一個含有10個元素的int類型數組a,10個數組元素的值是11~20,再定義一個方法arraySum(int[] a),返回數組所有元素的和,最後用main方法實現在屏幕上輸出數組a所有元素的和。
4、編寫一個java程序Suansu.java,定義兩個整型變數a和b,使用構造函數初始化a為10,b為5,並定義求出a與b的和(方法名為AddAB)、差(方法名為SubAB)、積(方法名為MultiAB)、商 (方法名為DivAB)的方法。
用另一個java程序TestSuansu.java測試Suansu.java定義的方法,並在屏幕上輸出結果。
5、創建一個名為Rectangle的類來表示一個使用寬度和高度來改變數的矩形,矩形的寬度和高度由構造方法來確定。為Rectangle類創建下列方法:
getArea返回矩形的面積,要求長和高的范圍為0~50;
getPerimeter返回矩形的周長;
Draw使用星號(*)作為描繪字元畫出該矩形(假設寬度和高度為整數);
在另一個類TestRectangle中編寫main方法來測試Rectangle類。
6、用面向對象的思想定義一個介面Area,其中包含一個計算面積的方法CalsulateArea(),然後設計MyCircle和MyRectangle兩個類都實現這個介面中的方法CalsulateArea(),分別計算圓和矩形的面積,最後寫出測試以上類和方法的程序。
7、創建一個Frame,有兩個Button按鈕和一個TextField,點擊按鈕,在TextField上顯示Button信息。
8、創建下圖的GUI程序(注意:不需要提供任何功能)。
9、編寫一個文件拷貝的程序,將文件C:\test1.txt的內容拷貝到C:\test2.txt中。
10、編寫一個程序,統計給定文件中每個字母出現的頻率。
11、編寫一個程序,統計給定文件中包含的單詞數目,並按單詞表的順序顯示統計結果。
12、用圖形界面設計一個簡單的計算器。
13、用圖形界面實現簡單的銀行櫃台業務,包含創建新帳戶、取款、存款、查詢帳戶余額等業務。