版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 常見的Java上機(jī)面試題 在程序員面試中,主要的考試形式分為筆試和上機(jī)編程考試兩部分。筆試主要考查面試者的 基礎(chǔ)是否牢固;上機(jī)考試主要考查面試者的實(shí)際開發(fā)能力和技術(shù)技巧。 上機(jī)編程考試,要求面試者能夠根據(jù)題目的要求,使用一種編程工具,編寫全部代碼并調(diào)試 運(yùn)行。這主要是考查面試者代碼書寫和編程的熟練程度。值得注意的是,這類面試題要求能夠 正確運(yùn)行,往往要求面試者使用比較原始的JDK編譯方式也就是使用 DOS命令提示符,而不 是提供Eclipse或者JBuilder等快速開發(fā)環(huán)境。本章將經(jīng)常岀現(xiàn)的上機(jī)編程題進(jìn)行分類,希望能 夠給讀者帶來(lái)幫助和啟示。 仃.1 Java基礎(chǔ)編程試題(1) 在上機(jī)編程
2、類的面試題中,大部分涉及基礎(chǔ)編程,例如算法、語(yǔ)法、常用的類等知識(shí)點(diǎn)。 面試題1怎樣截取字符串 考題題干 編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸岀為按字節(jié)截取的字符串。但 是要保證漢字不被截半個(gè),如”我ABC4,應(yīng)該截為”我AB,輸入”我ABC漢DEF6,應(yīng)該 輸岀”我ABC,而不是”我ABC+漢的半個(gè)”。 試題分析 本面試題容易產(chǎn)生困惑的是中文字符和英文字符,在這里需要考慮漢字和英文字符的占用字 節(jié)數(shù)問(wèn)題,中文字符占兩個(gè)字節(jié),英文字符占一個(gè)字節(jié),理解了這個(gè),就很容易完成本題了。 參考答案 具體代碼實(shí)現(xiàn)如下: 1. 2. 3. 4. 5. 6. 7. 8. 9. package
3、core_java; import java.util.Sca nner; public classIn tercepti on Str static String ss; /要進(jìn)行截取操作的字符串 static int n; /截取的字符串的字節(jié)數(shù) void main( Stri ng args) 請(qǐng)輸入字符串:“); new Sca nn er(System.i n); / public static System.out.pr intln( Scanner scStr = /從鍵盤獲取字符串 ss = scStr .n ext(); 將Scanner 對(duì)象中的內(nèi)容以字符串的形式取岀來(lái) 1
4、0.System.out.pri ntln( 請(qǐng)輸入字節(jié)數(shù):“); 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Scanner scByte =new Scann er(System.i n); /從鍵盤獲取字符串 n = scByte .n extI nt(); /將Scanner對(duì)象中的內(nèi)容以數(shù)值的形式取岀來(lái) In terceptio n(setValue(); /方法與方法間的套用 public static
5、Strin g setValue() /此方法的作用是將字符串轉(zhuǎn)換成字符串?dāng)?shù)組 Strin g stri ng =new Stri ngss .len gth(); /創(chuàng)建一個(gè)字符數(shù)組string for ( int i =0; i string.length; i+) str in gi = ss.substr in g(i, i +1); /將字符串ss中的 第i個(gè)字符取岀,放入字符數(shù)組中string中 return stri ng; /將這個(gè)字符數(shù)組返回 public static voidIn tercepti on( Str in g str ing) int cou nt =0;
6、Stri ng m =u4e00-u9fa5; /漢字的正則表達(dá)試 System.out.println(以每+ n +字節(jié) 劃分的字符串如下所示:); for (int i =0; i stri ng.len gth; i+) if (stringi.matches(m) /將字符數(shù)組中的每一 個(gè)元素與表則表達(dá)式進(jìn)行匹配,如果相同則返回true cou nt = cou nt +2; /如果當(dāng)前字符是漢字,計(jì)數(shù)器count就加2 else cou nt = cou nt +1; /如果當(dāng)前字符不是漢字,計(jì)數(shù)器 count就加1 if (cou nt n) /如果當(dāng)前計(jì)數(shù)器count的值小于n
7、,則輸岀當(dāng)前字符 System.out.pri nt(stri ngi); else if (cou nt = n) /如果當(dāng)前計(jì)數(shù)器count的值等于n,則輸岀當(dāng)前字符 System.out.pri nt(stri ngi); cou nt =0; 39. System.out.pri ntln(); /內(nèi)循環(huán)結(jié)果,則需要換行,起到控制打印格式的作用 40. else 41. count =0; /如果當(dāng)前計(jì)數(shù)器 count 的 值大于n,則計(jì)數(shù)器count清零,接著執(zhí)行外部循環(huán) 42. System.out.pri ntl n(); 43. 44. 45. 46. 程序的輸岀結(jié)果如圖17.
8、1所示。 | J*v Java Applicili tn rj | Q - * 謂輪只肅串jd jl28jadfffsddtdd! 4 ddd 請(qǐng)輸入字節(jié)數(shù)建 耳 以每5宇節(jié)劃分的字符串如下斯示匕 蛙國(guó) 回B加 dfffs dddd I奪畫 ddd 仃.1 Java基礎(chǔ)編程試題(2) 面試題2怎樣實(shí)現(xiàn)元素互換 考題題干 從鍵盤上輸入10個(gè)整數(shù),并將其放入一個(gè)一維數(shù)組中,然后將其前5個(gè)元素與后5個(gè)元素 對(duì)換,即:第 1個(gè)元素與第10個(gè)元素互換,第 2個(gè)元素與第9個(gè)元素互換 第5個(gè)元素與第6 個(gè)元素互換。分別輸出數(shù)組原來(lái)各元素的值和對(duì)換后各元素的值。 試題分析 由于本題的要求是實(shí)現(xiàn)頭尾元素互換,所
9、以可以釆用取利用臨時(shí)變量的方法來(lái)進(jìn)行元素交 換。 參考答案 具體代碼實(shí)現(xiàn)如下: package programe; import java.io.BufferedReader; import java.io .I OExceptio n; import java.i o.ln putStreamReader; public classHuHua nDemo public static voidmain( Stri ng args) pri nt(); public static int write() BufferedReader buf =new BufferedReader int n;
10、/* 開關(guān)量和中間量*/ int array =new int 10 ; for (int i =0; i 10 ; i+)/* 賦值*/ bufi= new BufferedReader( new 10; /*申請(qǐng)緩沖數(shù)組 */ In putStreamReader(System.i n); /*給每個(gè)緩沖區(qū)定義*/ do /*判斷是否是空串,如是則重新輸入*/ n =1 ; System.out.print(請(qǐng)輸入第+ (i + 數(shù):“); try /*建立一個(gè)異常捕獲*/ arrayi = In teger.parse Int 1) +個(gè)整 (bufi.readLi ne();/* 執(zhí)行
11、串變整數(shù) */ /* * In teger.parse In t(str) - str 轉(zhuǎn)成 int 型 bufi.readLi ne()- * 從系統(tǒng)輸入緩沖區(qū)讀入字符流給 buf緩沖區(qū)并返回字符串 */ catch(NumberFormatExcepti on e) 常*/ /*捕獲異 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. System.out.pri ntl n( 錯(cuò)誤請(qǐng)重新
12、輸入“);/*處理異常*/ 數(shù)據(jù)輸入 35. n = 0 I 36. catch (IOException e) 37. e.pri ntStackTrace(); 38. 39. while (n =: = 0); 40. 41. return array; 42. 43. 44. 45. publicstaticvoid prin t() 46. int ary = write(); 47. int s; 48. System.out.pr intln( n你輸入的數(shù)組是:); 49. for (int i =0 ;i 10; i+)/* 輸岀原數(shù)組*/ 50. 51. System.ou
13、t.pr in t(aryi + ); 52. 53. for (int i =0 ;i 5; i+)/* 對(duì)換*/ 54. 55. s = aryi; 56. aryi = ary 9 - i; 57. ary9 - i = s; 58. 59. 60. System.out.pr intln( n對(duì)換后的數(shù)組是:); 61. for (int i =0 ;i 10; i+)/* 輸出對(duì)換后數(shù)組 */ 62. 63. System.out.pr in t(aryi + ); 64. 65. System.out.pr in tl n(); 66. 67. 68. 69.程序輸岀的結(jié)果如圖17
14、.2所示。 仃.1 Java基礎(chǔ)編程試題(3) 面試題3怎樣實(shí)現(xiàn)元素排序 考題題干 (1)用Java實(shí)現(xiàn)一種排序。(2) Java類實(shí)現(xiàn)序列化的方法是什么?( 3)在COLLECTION 框架中,如果實(shí)現(xiàn)自然比較方法,則需要實(shí)現(xiàn)什么樣的接口? 試題分析 排序是程序員經(jīng)常遇到的,也是基本的技巧之一,一般的排序方法有插入排序、冒泡排序、 選擇排序、Shell排序、快速排序、歸并排序、堆排序、SortUtil等。下面詳細(xì)介紹 3種排序方 法。 1 冒泡排序(Bubble Sort) 最簡(jiǎn)單的排序方法是冒泡排序法。這種方法的基本思想是,將待排序的元素看作是豎著排列 的氣泡”,較小的元素比較輕,從而要往
15、上浮。在冒泡排序算法中要對(duì)這個(gè)”氣泡”序列處理若 干遍。所謂一遍處理,就是自底向上檢查一遍這個(gè)序列,并時(shí)刻注意兩個(gè)相鄰元素的順序是否 正確。如果發(fā)現(xiàn)兩個(gè)相鄰元素的順序不對(duì),即”輕”的元素在下面,就交換它們的位置。顯然, 處理一遍之后,”最輕”的元素就浮到了最高位置;處理兩遍之后,”次輕”的元素就浮到了次高 位置。在進(jìn)行第二遍處理時(shí),由于最高位置上的元素已是”最輕”元素,所以不必檢查。一般地, 第i遍處理時(shí),不必檢查第i高位置以上的元素,因?yàn)榻?jīng)過(guò)前面i-1遍的處理,它們已正確地排 序。 2.選擇排序(Selection Sort) 選擇排序的基本思想是,對(duì)待排序的記錄序列進(jìn)行n-1遍的處理,第1
16、遍處理是將L1.n 中最小者與L1交換位置,第2遍處理是將L2.n中最小者與L2交換位置,第i遍處 理是將Li.n中最小者與Li交換位置。這樣,經(jīng)過(guò)i遍處理之后,前i個(gè)記錄的位置就已經(jīng)按 從小到大的順序排列好了。 當(dāng)然,在實(shí)際操作時(shí),也可以根據(jù)需要,通過(guò)從待排序的記錄中選擇最大者與其首記錄交換 位置,按從大到小的順序進(jìn)行排序處理。 3 .插入排序(Insertion Sort ) 插入排序的基本思想是,經(jīng)過(guò)i-1遍處理后,L1.i-1已排好序。第i遍處理僅將Li插入 L1 .i-1的適當(dāng)位置,使得L1.i還是排好序的序列。要達(dá)到這個(gè)目的,可以用順序比較的方法。 首先比較Li和Li-1,如果Li
17、-1 Li貝U L1.i已排好序,第i遍處理就結(jié)束了;否則交換 Li與Li-1的位置,繼續(xù)比較Li-1和Li-2,直到找到某一個(gè)位置j(1 j Wi),使得Lj L+1 時(shí)為止。 簡(jiǎn)言之,插入排序就是每一步都將一個(gè)待排數(shù)據(jù)按其大小插入到已經(jīng)排序的數(shù)據(jù)中的適當(dāng)位 置,直到全部插入完畢。 參考答案 j 1)具體代碼實(shí)現(xiàn)如下: 1. package programe; 2. import java.util.*; 3. class In serti on Sort 4. ArrayList list; 5. / num指的是數(shù)據(jù)的個(gè)數(shù),mod指的是可以 產(chǎn)生隨機(jī)數(shù)的范圍在 1 mod之間 6. pu
18、blicIn serti on Sort(int n um,int mod) 7. list =new ArrayList( num); 8. Ran dom dom = 9. System.out.pri ntl n( 10. for (int i = 11. list.add( (do m.n extI nt() % mod + new Ran dom(); 排序之前的數(shù)組:“); 0; i n um; i+) new In teger(Math.abs 1); 12. System.out.pr intln( list + =+ list.get(i); 13. 14. 15. publ
19、icvoid SortIt() 16. In teger temp Int; 17. int MaxSize =1; 18. for (int i =1; i =(I nteger) list.get(MaxSize -1) 21. .in tValue() 22. list.add(MaxSize, tempi nt); 23. MaxSize+; 24. else 25. for (int j =0; j = temp Int 27. .in tValue() 28. list.add(j, temp In t); 29. MaxSize+; 30. break ; 31. 32. 33.
20、 34. 35. System.out.pr intln( 排序之后的數(shù)組:); 36. for (int i =0 ;i list.size(); i+) 37. System.out.pr intln( list+ i + =+ list.get( i); 38. 39. 40. publicstaticvoid main( Stri ng args) 41. In serti on Sort is = new In sertio nSort( 10, 100); 42. is.SortIt(); 43. 44. 程序的輸岀結(jié)果如圖17.3所示。 ; DtdertitiMb | HMMMa
21、U t*rs i H.t f-i I nW 11 o hS OF l J iv 掙序二甫的能殂; U3tEO-0lA3t21-0O UstOJ-ie Ust-2 iiatESLlBt 6 -a list 11 -ae li3ce-S0 113C( -34 11st 0- 11 st 11 -LSiist 2 *2711st 3 -31 Hat 1J -40 LUC SJ M211SCq-5011M7 J 71IlStJ -691 ulu lu.COlII 技術(shù)成就琴想 仃.1 Java基礎(chǔ)編程試題(4) 面試題4怎樣實(shí)現(xiàn)Singleton模式編程 考題題干 請(qǐng)編寫一個(gè)Singleton模式的程
22、序。 試題分析 Singleton模式的主要作用是保證在 Java應(yīng)用程序中,一個(gè)類 Class只有一個(gè)實(shí)例存在。在 很多操作中,比如建立目錄數(shù)據(jù)庫(kù)連接都需要這樣的單線程操作。使用Singleton的好處還在于 可以節(jié)省內(nèi)存,因?yàn)樗拗屏藢?shí)例的個(gè)數(shù),有利于Java垃圾回收。 一般Singleton模式通常的形式為:定義一個(gè)類,它的構(gòu)造函數(shù)為private的,它有一個(gè)static 的private變量,在類初始化時(shí)實(shí)例化,通過(guò)一個(gè)public的getInstance方法獲取對(duì)它的引用, 繼而調(diào)用其中的方法。 參考答案 (兩種實(shí)現(xiàn)方法,取一即可) 1. package programe; 2. 2
23、. publicclass Sin glet on 3. privateSin glet on() 4. 5. /注意這是private 只供內(nèi)部調(diào)用 6. private final staticSi ngleto n in sta nee =new Sin gleto n() I 8. 7. /這里提供了一個(gè)供外部訪問(wèn)本class 的靜態(tài)方法,可以直接訪問(wèn) 8. public staticSin glet on get In sta nce() 9. retur nin sta nee; 10. 11. 或者: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
24、package programe; public classSin glet on private staticSin glet on in sta nee =n ull ; public staticsyn chro ni zedSin glet on get In sta nce() /使用時(shí)生成實(shí)例,提高了效率! if (in sta nee =n ull ) in sta nee =new Si ngleto n(); retur nin sta nee; 面試題5 哥德巴赫猜想的近似證明 考題題干 哥德巴赫猜想是說(shuō)任何一個(gè)大于2的偶數(shù)都能表示為兩個(gè)素?cái)?shù)之和。請(qǐng)編寫一個(gè)Java程序,
25、驗(yàn)證1100內(nèi)哥德巴赫猜想的正確性,也就是近似證明哥德巴赫猜想。 試題分析 可以應(yīng)用枚舉的方法列岀1100內(nèi)的所有偶數(shù)。然后逐一驗(yàn)證每個(gè)偶數(shù)是否滿足哥德巴赫 猜想的論證。如果有一個(gè)不符合,就意味著哥德巴赫猜想不成立。 一個(gè)正偶數(shù) m 可以表示成 m=1+(m-1) , m=2+(m-2) , m=3+(m-3) , ,- m=m/2+m/2。由 于m/2的后半部分和前半部分的結(jié)果是一樣的,只是加數(shù)順序不同,所以可以忽略。 參考答案 具體代碼實(shí)現(xiàn)如下: 25. 5. System.out.pr intln( 在1100范圍內(nèi), 現(xiàn)在開始證實(shí)哥德巴赫猜想:“); 6. if 仃 estify_Gu
26、ess( 1, 100 ) 7. System.out.pr intln( 在1100 范圍內(nèi), 哥德巴赫猜想是正確的?!?; 8. else 9. System.out.pr intln( 哥德巴赫猜想是錯(cuò)誤的 10. 11. 12. 13. 14. publicstaticboolea n Testify_Guess(int low, 1. package programe; 2. 2. public class Guess 3. public static void main( Stri ng args) int high) 判斷 / 符合則返回 1100范圍內(nèi)的所有偶數(shù)是否符合哥德巴赫
27、猜想, true ,反之則返回false ); 15. 16. 17. 18. int i, j =0; boolea n flag = true for (i = low; i 的偶數(shù)進(jìn)行猜想測(cè)試 2) / 20. if (isGoldbach(i) 21. j+; j用來(lái)控制輸出格式 / 22. 23. 24. ,每行輸出5個(gè)數(shù)據(jù) if (j = System.out.pri ntl n(); j = 5) 0; 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 4
28、8. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. false flag = else break / / II return flag; public static 判斷參數(shù)a是否符合哥德巴赫猜想 int i; boolea n for (i = boolea n isGoldbach( flag = 1; i = a / false 2; i+) (isPrime(i) System.out.pri nt(a + ); if II int a) =+ i + (a - i) / break ; 只要有一個(gè)符合條件的就可以退岀循環(huán),判斷下一個(gè)
29、偶數(shù) return flag; public staticboolea nisPrime( int i) / 判斷參數(shù)i是否是素?cái)?shù),是則返回true反之則返回false int n; boolea nflag = true / 1 本身 if ( 1 = i) 不是素?cái)?shù),因此需把這個(gè)特殊的數(shù)字拋出 flag =false ; for (n =2; n = i -1; n+) /*判斷i是否是素?cái)?shù)的一個(gè)方法是看2i-1之間有其因子 (能被2整除),有則不是素?cái)?shù)返回false ,反之則返回true*/ if (i % n =0) flag =false ; break ; return flag;
30、 61. 62. 程序的輸岀結(jié)果如圖17.4所示。 PrblSi JwtdocQ右ni協(xié)I* XliagBIrfB-rt*Dai Gun Ejart Appliulioii】 D:Pr4(ri i FiltiJav*jr*6Vi nj *vsw txt (20055+26-3+36*3+510-3+712-5+7 14-3+11 l-3+13 18-5+13 ZO-3+17 223+19 一:mm 2-3+23 28-5+23 307+23 32-3+29 mi 3 6-S+31 33-7+31 40-3+37 42-5+37 46-3+43 48-5+43 SO-3+7 52-5+47 27
31、十 523+53 58*5+33 60-7+53 623+59 66S+61 68*7+61 3+67 72-5+S7 76-3+73 ?a-s+?3 80-7+73 82-3+79 SJ-5+79 KQ3 福 3 8S-5+63 90-7+63 92-3+59 9-15+85 96-7+S9 90-19+79 叱出7在內(nèi)T蕙嘶翱是正細(xì)心 一P 熾不啟航第用1 仃.1 Java基礎(chǔ)編程試題(5) 面試題6怎樣實(shí)現(xiàn)金額轉(zhuǎn)換 考題題干 金額轉(zhuǎn)換,阿拉伯?dāng)?shù)字的金額轉(zhuǎn)換成中國(guó)傳統(tǒng)的形式如: ( 1011) t (壹仟零壹拾壹元整)輸岀。 試題分析 金額轉(zhuǎn)換,在開發(fā)財(cái)務(wù)相關(guān)軟件時(shí)會(huì)經(jīng)常用到,也是軟件本地
32、化的一個(gè)需要。一般開發(fā)公司 或者團(tuán)隊(duì)都有相應(yīng)的金額轉(zhuǎn)換類或者是模塊,配合報(bào)表工具,可以實(shí)現(xiàn)良好的本地化。這里給 出一個(gè)簡(jiǎn)單的金額轉(zhuǎn)換代碼,供讀者參考。 參考答案 具體代碼實(shí)現(xiàn)如下: 1. 2. package import programe; java.text.NumberFormat; 3. 4. import import public java.util.HashMap; java.util.Sca nner; classAmou ntOfC on versio n 6. /定義 HashMap 的 value 值 7. public static final Stri ng EMPT
33、Y = Illi . 8. public static final Stri ng ZERO = 零“ 9. public static final Stri ng ONE = 壹; 10. public static final String TWO = IIII . 貝J ; 5. 11. public static final Stri ng THREE = 叁; 12. public static final Stri ng FOUR = 肆“; 13. public static final Stri ng FIVE = 伍; 14. public static final Stri
34、 ng SIX = 陸“; 15. public static final Stri ng SEVEN = 柒; 16. public static final Stri ng EIGHT = 捌“; 17. public static final Stri ng NINE = 玖“; 18. public static final Stri ng TEN = 拾“; 19. public static final Stri ng HUNDRED = :佰“; 20. public static final Stri ng THOUSAND =仟“; 21. public static fin
35、al String TEN_THOUSAND =萬(wàn); 22. public static final String HUNDRED_MILLION =彳乙; 23. public static final Stri ng YUAN = 元; 24. public static final Stri ng JIAO = 角; 25. public static final Stri ng FEN = 分“; 26. public static final Stri ng DOT = II II. 27. private static Amou ntOfC on versio n formatte
36、r =n ull ; /創(chuàng)建AmountOfConversion的實(shí)例對(duì)象 28. II創(chuàng)建初始化一個(gè) HashMap 對(duì)象 29. privateHashMap NumberMap = new HashMap(); 30. privateHashMap High numberofM oney =newHashMap(); 31. /創(chuàng)建初始化一個(gè) NumberFormat 對(duì)象 32. privateNumberFormat n umberFormat = NumberFormat.get In sta nce(); 33. privateAmou ntOfCo nversio n() 34
37、. / 在用 new 創(chuàng)建 AmountOfConversion對(duì)象時(shí), 為HashMap對(duì)象進(jìn)行key-value的映射 35. n umberFormat.setMaximumFractio nDigits(4); /設(shè)置數(shù)據(jù)的小數(shù)部分的最大位數(shù)是4位 36. n umberFormat.setMi ni mumFractio nDigits(2); /設(shè)置數(shù)據(jù)的小數(shù)部分的最小位數(shù)是2位 37. n umberFormat.setGroup in gUsed(false ); /*設(shè)置此格式中是不可以使用組。如果設(shè)置可以使用組, 則數(shù)1234567可能被格式化為 1,234,567*/ 3
38、8. NumberMap.put( 0 ,ZERO); 39. NumberMap.put( 1 ,ONE); 40. NumberMap.put( 2 ,TWO); 41. NumberMap.put( 3 ,THREE); 42. NumberMap.put( 4 ,FOUR); 43. NumberMap.put( 5 ,FIVE); 44. NumberMap.put( 6 ,SIX); 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
39、70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. NumberMap.put(7 ,SEVEN); NumberMap.put(8 ,EIGHT); NumberMap.put(9 ,NINE); NumberMap.put(DOT, DOT); High numberofM on ey.put( 1 ,TEN); High numberofM on ey.put( 2 ,HUNDRED); High numberofM on ey.put( 3 ,THOUSAND); High numberofM on ey.put( 4 ,TE
40、N_THOUSAND); High numberofM on ey.put( 5 ,TEN); High numberofM on ey.put( 6 ,HUNDRED); High numberofM on ey.put( 7 ,THOUSAND); High numberofM on ey.put( 8 ,HUNDRED_MILLION); public staticAmou ntOfC on vers ion get In sta nce() / 判斷 AmountOfConversion if (formatter = formatter = return formatter; 對(duì)象f
41、ormatter是否初始化 n ull ) new Amou ntOfC on versio n(); /進(jìn)行金額轉(zhuǎn)換的多種數(shù)據(jù)類型 publicStri ng format(Stri ng mon eyStr) String result =不能進(jìn)行金額轉(zhuǎn)換! if (isConversion(moneyStr) result = con vert In tegerToch in ese(m on eyStr); result = con vertPo in tTochi nese(result); return result; public String format(double mon
42、 eyDouble) retur nformat (n umberFormat.format(m on eyDouble); publicStri ng format(int moneylnt) retur nformat (n umberFormat.format(m oneyln t); public String format(long mon eyL ong) returnformat (n umberFormat.format(m on eyL on g); publicStri ng format(Number mon eyNum) retur nformat (n umberFo
43、rmat.format(m on eyNum); 84. privateStri ng con vert In tegerToch in ese(Str ing mon eyStr) /將參數(shù)中傳入的阿拉伯?dāng)?shù)字轉(zhuǎn)換成中文 85. String result; 86. Stri ngBuffer C2CStrBufer = new Stri ngBuffer(); 87. for ( int i =0; i 0; i-) 95. C2CStrBufer.i nsert(i. High numberofMo ney.get(EMPTY 96. + mon eyPatternCursor); 97.
44、 mon eyPatter nCursor = mon eyPatter nCursor = = 8 ? 1 98. :mon eyPatter nCursor + 1; 99. 100. er Stri ng fractio nPart = C2CStrBufer.substri ng(C2CStrBuf 101. .in dexOf(.); 102. C2CStrBufer.delete(C2CStrBufer. in dexOf( II II ), 103. C2CStrBufer.le ngth(); 104. while (C2CStrBufer.i ndexOf( 零拾“) !=
45、- 1) 105. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零拾), 106. C2CStrBufer.i ndexOf( II 零拾 ) + 2, ZERO); 107. 108. while (C2CStrBufer.i ndexOf( 零佰) != - 1) 109. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零佰), 110. C2CStrBufer.i ndexOf( II 零佰)+ 2, ZERO); 111. 112. while (C2CStrBufer.i ndexOf( 零仟) != -
46、1) 113. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零仟), 114. C2CStrBufer.i ndexOf( II 零仟)+ 2, ZERO); 115. 116. while (C2CStrBufer.i ndexOf( 零萬(wàn)“) != - 1) 117. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零萬(wàn)), 118. C2CStrBufer.i ndexOf( II 零萬(wàn) “)+ 2, TEN_THOUSAND); 119. 120. while (C2CStrBufer.i ndexOf( 零億
47、“)匸- 1) 121. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零億“), 122. C2CStrBufer.i ndexOf( 零億 )+ 2, HUNDRED_MILLION); 123. 124. while (C2CStrBufer.i ndexOf( 零零“)匸- 1) 125. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零零“), 126. C2CStrBufer.i ndexOf( 零零“) + 2, ZERO); 127. 128. if (C2CStrBufer.last In dexOf
48、(ZERO)= C2CStrBufer.le ng th()- 1) 129. C2CStrBufer.delete(C2CStrBufer.length()- 1, 130. C2CStrBufer.le ngth(); 131. C2CStrBufer.appe nd(fractio nPart); 132. result = C2CStrBufer.toStri ng(); 133. return result; 134. 135. privateStri ng con vertPo in tTochi nese(Str ing mon eyStr) /對(duì)小數(shù)點(diǎn)后面的數(shù)字進(jìn)行漢字處理 1
49、36. Stri ng result; new Stri ngBuffer(m on eyStr) 137. Stri ngBuffer C2CStrBufer = 138. int in dexOfDot = C2CStrBufer.i ndexOf(DOT); 1 , YUAN) 1 , JIAO); 139. C2CStrBufer.replace(i ndexOfDot, i ndexOfDot + 140. C2CStrBufer.i nsert(C2CStrBufer.le ngth()- 141. C2CStrBufer.i nsert(C2CStrBufer.le ngth()
50、, FEN); 142. 整 if (C2CStrBufer.i ndexOf( 零角零分“)!= -1)/沒(méi)有零頭,加 143. ), 144. 145. 加整 146. 147. 148. 149. 150. C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零角零分 C2CStrBufer.le ngth(), 整“); else if (C2CStrBufer.i ndexOf( 零分)!=- 1)/沒(méi)有零分, C2CStrBufer.replace(C2CStrBufer.i ndexOf( 零分“), C2CStrBufer.le ngth(),
51、整“); else if (C2CStrBufer.i ndexOf( 零角)!=- 1) C2CStrBufer.delete(C2CStrBufer.i ndexOf( 零角 ), 151. 152. 153. 154. 155. 156. 157. 158. 159. C2CStrBufer.i ndexOf( result = C2CStrBufer.toStri ng(); retur n result; private boolea nisC on versio n(String mon eyStr) 判斷參數(shù)傳來(lái)的數(shù)據(jù)是否符合進(jìn)行轉(zhuǎn)換的條件 int fractionDigits
52、= moneyStr.length()- mon eyStr.i ndexOf(DOT) -1 ; boolea nflag = true if (fractio nDigits / 160.System.out.pri ntln( 的小數(shù)位多于兩位。 ); 零角 “)+2); 2) 金額+ moneyStr + II 161. flag =false ; 162. 163. return flag; 164. 165. 166. publicstaticvoid mai n( Stri ng args) 167. System.out.pr intln( 請(qǐng)輸入金額數(shù):”); 168. Sc
53、anner scanner = new Sca nn er(System.i n) 169. String str = scanner.next(); 170. System.out.pr intln( 轉(zhuǎn)換后的金額為:” 171. System.out.pr intln( get In sta nce().format( r); 172. 173. 17.1 Java基礎(chǔ)編程試題(6) 精度不能比分低 / ); 程序的輸岀結(jié)果如圖17.5所示。 new Double(st 面試題7愛因斯坦的階梯問(wèn)題 考題題干 愛因斯坦曾出過(guò)這樣一道有趣的數(shù)學(xué)題:有一個(gè)長(zhǎng)階梯,每步上2階,最后剩1階;若每步
54、上3階,最后剩2階;若每步上5階,最后剩4階;若每步上6階,最后剩5階;只有每步上 7 階,最后一階也不剩。請(qǐng)問(wèn)該階梯至少有多少階。編寫一個(gè)Java程序解決該問(wèn)題。 試題分析 從上面的描述中,可以把這個(gè)問(wèn)題用數(shù)學(xué)方程式的形式表達(dá)岀來(lái),代碼如下: 1. x%2=1 2. x%3 = 2 3. x%5 = 4 4. x%6 = 5 5. x%7 = 0 從上面的表達(dá)式中不難看岀,此方程x的解應(yīng)該有無(wú)窮個(gè),但這里要求的是那個(gè)最小的解。 這個(gè)解一定是 7的倍數(shù),因?yàn)閤%7=0,因此就用7的倍數(shù)依次與 2、3、5、6進(jìn)行取模運(yùn)算,如 果都符合了上面表達(dá)式的條件,那么這個(gè)數(shù)就是本題的答案,沿著這條思路,本
55、題的具體代碼 如下。 參考答案 具體代碼實(shí)現(xiàn)如下: 1. package core_java; 2. 2. public class StairsFlight 4. 3. public static void main( Stri ng args) 6. int x = 7, i, res =0; 7. boolea n flag =false ; 8. for (i = 1 ; i =50 ; i+) / 將循環(huán)次數(shù)定為 50, 表示尋找范圍為:7350 之間 9. if (x %2 =1) 11. flag =true ; 12. break ; 13. 14. x =7 * (i + 1
56、); 15. 16. if ( true = flag) 17.System.out.println(關(guān)于愛因 斯坦的階梯問(wèn)題的答案是:+ res); 18. else 19. System.out.println(在 7 的 1 50 倍這個(gè)范圍內(nèi)沒(méi)有結(jié)果 ); 20. 21. 程序的輸岀結(jié)果如下: 1.關(guān)于愛因斯坦的階梯問(wèn)題的答案是:119 面試題8 如何判斷回文數(shù)字 考題題干 有這樣一類數(shù)字,它們順著看和倒著看是相同的數(shù),例如:121、656、2332等,這樣的 數(shù)字就稱為回文數(shù)字。編寫一個(gè)Java程序,判斷從鍵盤接收的數(shù)字是否為回文數(shù)字。 試題分析 從回文數(shù)字的特點(diǎn)出發(fā),弄清楚其特點(diǎn)是解決本問(wèn)題的關(guān)鍵。解決方案可以通過(guò)將該數(shù)字倒 置的辦法來(lái)判斷它是否是回文數(shù)字,例如:586,它的倒置結(jié)果為 685,因?yàn)?86 ! =685,故 586不是回文數(shù)字。 參考答案 1. package core_java; 2.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康教育會(huì)議記錄(16篇)
- 就業(yè)調(diào)查報(bào)告
- 2024年大數(shù)據(jù)中心云服務(wù)運(yùn)營(yíng)合作協(xié)議
- 血吸蟲病知識(shí)宣傳講座
- 2024年新媒體廣告投放與發(fā)布專項(xiàng)合同
- 2024年式區(qū)域獨(dú)家分銷合作協(xié)議
- 孔雀銷售合同范例
- 糖尿病足社區(qū)護(hù)理
- 科研啟航模板
- 三年級(jí)《分?jǐn)?shù)的初步認(rèn)識(shí)》課件
- 小學(xué)綜合實(shí)踐活動(dòng)-筆記自然教學(xué)課件設(shè)計(jì)
- Unit 6 Understanding ideas Hot!Hot!Hot!課件高中英語(yǔ)外研版(2019)必修第三冊(cè)
- 加油站加油機(jī)設(shè)備安全管理制度
- 醫(yī)學(xué)影像技術(shù)專業(yè)(群)建設(shè)方案
- 【招標(biāo)控制價(jià)編制研究文獻(xiàn)綜述(論文)4800字】
- 鐘表經(jīng)典款式勞力士黑鬼
- 學(xué)校崗位廉政風(fēng)險(xiǎn)排查登記表
- 肝癌原發(fā)性肝癌的綜合治療
- 放化療相關(guān)口腔黏膜炎預(yù)防及處理
- 公司電梯安全總監(jiān)、電梯安全員崗位職責(zé)
- 02J331地溝及蓋板圖集
評(píng)論
0/150
提交評(píng)論