Java基礎編程練習題

很多人在自學java的時候看一遍視頻,感覺就會了,課後並沒有大量的練習來鞏固當前所學的知識點,今天給大家整理了一些非常具有代表意義的題。

Java基礎類型題

1、反轉一個只有3位數的整數。

  •  從控制檯輸入321,輸出123

2、將一個字符由小寫字母轉換爲大寫字母。

  • 從控制檯輸入 a ,輸出A

3、從控制檯輸入一個字符串,由字母組成,轉換成大寫後輸出。

  • 如果輸入的是小寫,就轉換成大寫。
  • 如果輸入的是大寫,就轉換成小寫
  • 例如輸入:abCd ,控制檯輸入 ABcD

4、輸入三個整數x,y,z,請把這三個數由小到大輸出。

  • 例如輸入:1,3,2  輸出  1,2,3

5、判斷101-200之間有多少個素數,並輸出所有素數。

6、利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

7、輸入一行字符,分別統計出其英文字母、空格、數字和其它字符的個數。

  • 例如輸入 Ab12  sd
  • 輸出字母:4,空格1個,數字2個,這裏的數字按0到9算,12是1和2不是12

8、打印出如下圖案(菱形)

   *
  ***
 ******
********
 ******
  ***
   *
    *
   ***
  *****
 *******
*********
*
**
***
****
*****
*
**
***
****
*****
****
***
**
*
     *
    *  *
   *    *
  *      *
 *        *
  *      *
   *    *
    *  *
      *

9、給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。

10、求一個3*3矩陣對角線元素之和

11、有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。

12、將一個數組逆序輸出。

13、取一個整數a從右端開始的4~7位。

14、輸入數組,最大的與第一個元素交換,最小的與最後一個元素交換,輸出數組。

15、計算字符串中子串出現的次數。

16、有五個學生,每個學生有3門課的成績,從鍵盤輸入以上數據(包括學生號,姓名,三門課成績),計算出平均成績,將原有的數據和計算出的平均分數存放在磁盤文件"stud"中。

17、編寫程序,從鍵盤輸入一個 0~99999 之間的任意數,判斷輸入的數是幾位數?

18、用 while 循環,計算 1~200 之間所有 3 的倍數之和。

19、已知 XYZ+YZZ=532,其中,X、Y、Z 爲數字,編程求出 X、Y 和 Z 的值。

20、寫一個猜拳遊戲,從控制檯輸入石頭、剪刀、布,後臺隨機生成對應和輸入的做比較,看看誰能贏,輸,和平局。

基礎算法題

  1. 打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。(例如: 153是一個"水仙花數",因爲153=1的三次方+5的三次方+3的三次方。)
  2. 將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5

  3. 有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?

  4. 有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?
    一個整數,它加上100後是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少?(完全平方數 :如果一個正整數 a 是某一個整數 b 的平方 .0也是完全平方數)

  5. 輸出9*9口訣。

  6. 猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天 剩下的一半零一個。 到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。

  7. 有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。

  8. 一個數如果恰好等於它的因子之和,這個數就稱爲"完數"。例如6=1+2+3.編程 找出1000以內的所有完數。完數的意思是將所有因數加起來的和等於這個數.比如28= 1+2+4+7+14

  9. 古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子對數爲多少?

  10. 輸入兩個正整數m和n,求其最大公約數和最小公倍數。

  11. 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。輸出結果的形式如:2+22+222=246;

  12. 一球從h米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在 第n次落地時,共經過多少米?第n次反彈多高?程序分析:反彈的高度:(1/2)的n次方*h

  13. 利用遞歸方法求5!。

  14. 有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後問第一個人,他說是10歲。請問第五個人多大。

  15. 一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。

  16. 請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。

  17. 有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來第幾號的那位。

  18. 海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子憑據分爲五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?

  19. 809*??=800*??+9*??+1,其中??代表的兩位數,8*??的結果爲兩位數,9*??的結果爲3位數。求??代表的兩位數,及809*??後的結果。

  20. 一個偶數總能表示爲兩個素數之和。

  21. 某個公司採用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。

  22. 輸入 3 個正數,判斷能否構成一個三角形。

  23. 編寫程序解決“百錢買百雞”問題。公雞五錢一隻,母雞三錢一隻,小雞一錢三隻,現有百錢欲買百雞,共有多少種買法?

  24. 驗證“鬼谷猜想”:對任意自然數,若是奇數,就對它乘以 3 再加 1;若是偶數,就對它除以 2,這樣得到一個新數,再按上述計算規則進行計算,一直進行下去,最終必然得到 1。

面向對象練習題

1、設計2個類,要求如下:(知識點:類的繼承 方法的覆蓋) [必做題] 

• 2.1 定義一個汽車類Vehicle, 

• 2.1.1 屬性包括:汽車品牌brand(String類型)、顏色color(String類型)和速度speed(double類型)。 

• 2.1.2 至少提供一個有參的構造方法(要求品牌和顏色可以初始化爲任意值,但速度的初始值必須爲0)。 

• 2.1.3 爲屬性提供訪問器方法。注意:汽車品牌一旦初始化之後不能修改。 

• 2.1.4 定義一個一般方法run(),用打印語句描述汽車奔跑的功能 

• 2.1.5 在main方法中創建一個品牌爲―benz‖、顏色爲―black‖的汽車。


• 2.2 定義一個Vehicle類的子類轎車類Car,要求如下: 

• 2.2.1 轎車有自己的屬性載人數loader(int 類型)。

• 2.2.2 提供該類初始化屬性的構造方法。 

• 2.2.3 重新定義run(),用打印語句描述轎車奔跑的功能。 

• 2.2.4 在main方法中創建一個品牌爲―Honda‖、顏色爲―red‖,載人數爲2人的轎車。


2、 Cola公司的僱員分爲以下若干類:(知識點:多態) [必做題] 

• 4.1 ColaEmployee :這是所有員工總的父類,屬性:員工的姓名,員工的生日月份。方法:getSalary(int month) 根據參數月份來確定工資,如果該月員工過生日,則公司會額外獎勵100 元。
• 4.2 SalariedEmployee : ColaEmployee 的子類,拿固定工資的員工。屬性:月薪 

• 4.3 HourlyEmployee :ColaEmployee 的子類,按小時拿工資的員工,每月工作超出160 小時的部分按照1.5 倍工資發放。屬性:每小時的工資、每月工作的小時數 

• 4.4 SalesEmployee :ColaEmployee 的子類,銷售人員,工資由月銷售額和提成率決定。屬性:月銷售額、提成率 

• 4.5 定義一個類Company,在該類中寫一個方法,調用該方法可以打印出某月某個員工的工資數額,寫一個測試類TestCompany,在main方法,把若干各種類型的員工放在一個ColaEmployee 數組裏,並單元出數組中每個員工當月的工資。


3、編寫三個系別的學生類:英語系,計算機系,文學系(要求通過繼承學生類) [選做題] 

• 6.1各系有以下成績: 

• 英語系: 演講,期末考試,期中考試; 

• 計算機系:操作能力,英語寫作,期中考試,期末考試; 

• 文學系: 演講,作品,期末考試,期中考試; 

• 6.2各系總分評測標準: 

• 英語系: 演講 50% 

• 期末考試 25% 

• 期中考試 25% 

• 計算機系: 操作能力 40% 

• 英語寫作 20% 

• 期末考試 20% 

• 期中考試 20% 

• 文學系: 演講 35% 

• 作品 35% 

• 期末考試 15% 

• 期中考試 15% 

• 6.3定義一個可容納5個學生的學生類數組,使用隨機數給該數組裝入各系學生的對象,然後按如下格式輸出數組中的信息: 

• 學號:XXXXXXXX 姓名:XXX 性別:X 年齡:XX 綜合成績:XX


要求編寫一個Java應用程序:

(1)編寫一個矩形類Rect,包含:

兩個protected屬性:矩形的寬width;矩形的高height。

兩個構造方法:

1.一個帶有兩個參數的構造方法,用於將width和height屬性初化;

2.一個不帶參數的構造方法,將矩形初始化爲寬和高都爲10。

兩個方法:

求矩形面積的方法area()

求矩形周長的方法perimeter()

(2)通過繼承Rect類編寫一個具有確定位置的矩形類PlainRect,其確定位置用

矩形的左上角座標來標識,包含:

添加兩個屬性:矩形左上角座標startX和startY。

兩個構造方法:

帶4個參數的構造方法,用於對startX、startY、width和height屬性初始化;

不帶參數的構造方法,將矩形初始化爲左上角座標、長和寬都爲0的矩形;

添加一個方法:

判斷某個點是否在矩形內部的方法isInside(double x,double y)。如在矩

形內,返回true, 否則,返回false。

  提示:點在矩形類是指滿足條件:

x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-height)

(3)編寫PlainRect類的測試程序

創建一個左上角座標爲(10,10),長爲20,寬爲10的矩形對象;

計算並打印輸出矩形的面積和周長;

判斷點(25.5,13)是否在矩形內,並打印輸出相關信息。


類的成員變量 猜數字遊戲一個類A有一個成員變量v有一個初值100。定義一個類對A類的成員變量v進行猜。如果大了則提示大了小了則提示小了。等於則提示猜測成功。


類的成員變量 請定義一個交通工具(Vehicle)的類其中有: 屬性速度(speed)體積(size)等等 方法移動(move())設置速度(setSpeed(int speed))加速speedUp(),減速speedDown()等等. 最後在測試類Vehicle中的main()中實例化一個交通工具對象並通過方法給它初始化speed,size的值並且通過打印出來。另外調用加速減速的方法對速度進行改變。


構造方法 編寫Java程序模擬簡單的計算器。 定義名爲Number的類其中有兩個整型數據成員n1和n2應聲明爲私有。編寫構造方法賦予n1和n2初始值再爲該類定義加addition、減subtration、乘multiplication、除division等公有成員方法分別對兩個成員變量執行加、減、乘、除的運算。 在main方法中創建Number類的對象調用各個方法並顯示計算結果。


構造方法 編寫Java程序用於顯示人的姓名和年齡。 定義一個人類Person該類中應該有兩個私有屬性姓名name和年齡age。定義構造方法用來初始化數據成員。再定義顯示display方法將姓名和年齡打印出來。 在main方法中創建人類的實例然後將信息顯示。


定義一個點類Point,包含2個成員變量x、y分別表示x和y座標,2個構造器Point()和Point(intx0,y0),以及一個movePoint(int dx,int dy)方法實現點的位置移動,創建兩個Point對象p1、p2,分別調用movePoint方法後,打印p1和p2的座標


設計一個類Student,該類包括姓名、學號和成績。設計一個方法,按照成績從高到低的順序輸出姓名、學號和成績信息


 定義兩個類,描述如下: [必做題] 
• 定義一個人類Person: 
• 定義一個方法sayHello(),可以向對方發出問候語“hello,my name is XXX” 
• 有三個屬性:名字、身高、體重 
• 定義一個PersonCreate類: 
• 創建兩個對象,分別是zhangsan,33歲,1.73;lishi,44,1.74 
• 分別調用對象的sayHello()方法。


定義兩個類,描述如下: [必做題] 
• 定義一個人類Person: 
• 定義一個方法sayHello(),可以向對方發出問候語“hello,my name is XXX” 
• 有三個屬性:名字、身高、體重 
• 通過構造方法,分別給三個屬性賦值 
• 定義一個Constructor類: 
• 創建兩個對象,分別是zhangsan,33歲,1.73;lishi,44,1.74 
• 分別調用對象的sayHello()方法。


JavaIO練習題

1、在D盤創建一個ss的目錄,在ss下面創建一個s.txt文件,在文件裏邊寫入Hello World。

2、把剛纔s.txt文件讀取到內存中,顯示到控制檯

3、統計s.txt中各個字符出現的次數,打印到控制檯

4、把s.txt中大寫轉成小寫,小寫轉成大寫,空格轉成下劃線,在輸入到文件中覆蓋之前的。

5、從控制檯輸入一個路徑,程序循環讀取這個路徑下有多少文件夾?多少文件?

6、拷貝一張圖片從D盤到F盤、移動一張圖片從D盤到F盤

7、使用隨機文件流類RandomAccessFile將一個文本文件倒置讀出

8、編寫一個Java應用程序,可以實現Dos中的type命令,並加上行號。即將文本文件在控制檯上顯示出來,並在每一行的前面加上行號。

9、輸入兩個文件夾名稱,將A文件夾內容全部拷貝到B文件夾,要求使用多線程來操作。

10、在控制檯接受一個數字大小的類型,比如輸入5M,或者5KB,查找統計出電腦D盤目錄下小於5M的文件有多少個,或者小於5KB的大小有多少個文件。

11、在控制檯輸入2個mp3的路徑,程序接受到後對兩個mp3進行合成。合成後輸出到D:/merge.mp3。

12、對上面題目進行稍加改動,從控制檯接受至少兩個mp3路徑,輸入q退出,程序對這些路徑的mp3進行合成。

13、從網絡下載一個圖片到電腦的D盤(選做題)

14、對文件進行壓縮

15,對一個文件夾進行壓縮

集合練習題

1、創建一個ArrayList集合,輸入10個數,將數從大到小輸出,從小到大輸出,隨機輸出。

2、已知有兩個容器List,第一個List裝有【小編,小王】,第二個容器裝有【95分,94分】,請把第二個容器的94分改成95分,通過迭代器在控制打印出:

小編:95分
小王:95分

3、創建一個HashMap,裏邊存有key:username,value:password,的用戶密碼信息,從控制檯輸入一個用戶和密碼,程序在後臺判斷用戶名在map中是否存在,如果不存在,就提示用戶名錯誤,用戶正確,在判斷當前用戶名對應的密碼是否和輸入的一致,如果一致就提示用戶密碼正確.

4、有兩個list集合,l1數據有1,2,3,4 l2數據有 2,3,4,5, 將兩個集合中重複的數據移除,並且把不重複的添加到第三個l3集合裏邊。

5、創建一個List集合,裏邊有20組數據,在創建一個Map,把List中下標爲0的作爲map的key,下標爲list.length()-1的爲map的value,依次類推,最後在控制檯打印出map所對應的key和value。

6、創建一個Map集合,裏邊有10組數據,假如key爲1到10,value爲11到20,從控制檯接受1到20之間的數,程序後臺判斷map中key和value有沒有對應的,如果有提示當前數字爲key,對應的值是多少,如果是值匹配上了,提示匹配到值爲xx,對應的key爲yy。

7、有如下需求,中國隊,美國隊,日本隊,每個國家隊下面又有乒乓球,羽毛球,籃球,每個球類下面有第一組,第二組,第三組,每個組下面有教練,隊員,教練和隊員的信息有用戶名和性別,年齡,職位。請根據以上的需求利用List和Map以及學的集合類的知識點來完成這道題目。

反射相關練習題

1、定義一個Java類,Person,屬性有name、age,使用反射創建一個實例,調用構造函數初始化name和age,並且調用裏邊的sayHello()方法。

2、定義一個Java類,Person,通過反射把給裏邊所有的字段的賦值

3、通過反射調用main函數。

4、通過反射去創建對象,分別用Constructor和Class對象去創建

5、定義一個Person類,person類繼承了Base類,通過反射去查看Person類繼承了哪個類。

6、通過反射創建一個ArrayList對象,並且調用裏邊的方法添加一些數據,循環list,把對象打印到控制檯。

線程相關練習題

1、有如下數組 int[] arr = {1,2,3,4,5,6,7,8,9,10},現有兩個人進行抽籤,A先抽籤,B繼續抽籤,A繼續抽籤,依次類推,直到抽完爲止,抽一次少一次,不能有重複的,用兩個線程模擬兩個人的抽籤,隨機抽籤,把抽籤的結果打印到控制檯,記住,這裏是用數組,不是集合來存取1到10。

2、某公司組織年會,會議入場時有兩個入口,在入場時每位員工都能獲取一張雙色球彩票,假設公司有100個員工,利用多線程模擬年會入場過程,並分別統計每個入口入場的人數,以及每個員工拿到的彩票的號碼。線程運行後打印格式如下:

編號爲: 2 的員工 從後門 入場! 拿到的雙色球彩票號碼是: [17, 24, 29, 30, 31, 32, 07]
編號爲: 1 的員工 從後門 入場! 拿到的雙色球彩票號碼是: [06, 11, 14, 22, 29, 32, 15]
//.....
從後門入場的員工總共: 13 位員工
從前門入場的員工總共: 87 位員工

3、開啓一個子線程循環3次,主線程循環3次,然後子線程循環3次,主線程循環3次,這樣循環10次;

4、寫一個買票的例子,模擬3個窗口同時買60張票。

5、利用多線程去掃描統計你的電腦D盤前5個文件目錄,並且統計出來各個目錄地下有多少目錄和文件,並且目錄的深度是多少,比如有D:/a/b/c/d  這個目錄結構相對於a來說,他的深度是3,因爲他下面有目錄d。統計出a目錄下面有多少個目錄包括子目錄,遞歸統計,有多少個文件,遞歸統計,各個文件的類型有多少個,比如,txt有10個,exe有2個等。要求使用5個線程,每個線程各統計一個目錄。(綜合性題)

正則表達式練習題

1、匹配一個手機號碼是否正確,格式要求爲11位或者7位座機號碼,判斷要嚴格縝密。

2、匹配一個郵箱號碼,並且只有163,qq,126 這三種郵箱

3、匹配一個URL,分析URL的特性,並且效驗是否正確

4、匹配密碼的強度,要求包含至少一位大寫,大小寫和數字組合,不能出現任何特殊符號,比如Abc123Dcd是正確的

5、匹配一段文字裏邊是否包含中文,如果包含,報中文替換成*號,並且把替換後的在控制檯打印出來

6、從控制檯輸入一個字符串,用正則效驗是否爲數字?

7、匹配一個字符串是否是日期格式,日期格式如下:2018-12-12 12:12:12  或者 2019/02/24 09:11:23 這兩種格式

網絡編程練習題

1、從網上下載一個圖片到D:/xxx.mp3 

2、http://www.duwenzhang.com/wenzhang/renshengzheli/ganwu/20130515/255476.html 把這篇文章的源碼讀取下來,利用正則表達式把文字部分匹配出來打印到控制檯(選擇題)

3、用Socket創建一個服務端和一個客戶端,客戶端發送一條消息到服務端,服務端收到後把消息原樣回給客戶端

2、在上面的基礎上進一步改進,圖片端發送個圖片到服務端,服務端接受到保存到電腦的D:/yyy.jpg 

3、在上面的基礎上進一步改進,把圖片的名字和圖片本身轉成的byte數組封裝到對象裏邊,把對象傳到服務端,服務端接受到後對對象進行解析,把圖片保存到D盤下,圖片名稱用傳過來的原圖片名稱。

4、寫一個基於UDP客戶端發送到服務端的例子

綜合基礎題(創作型題)

1、我們都知道StringBuilder是動態擴容的,根據他的這個特性,自己實現一個StringBuilder類。

2、寫一個你認爲最經典,最具有代表意義並且涵蓋整個面向對象所有知識點的一道題。

 

文檔未完,持續更新中。以上部分題來自互聯網,希望看到的人能夠自己完成,對自己的學習負責,堅信自己的能力。

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