版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、17.1Java基礎(chǔ)編程試題(1)在上機(jī)編程類的面試題中,大部分涉及基礎(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)如下:package core_java;import
2、 java.util.Scanner;public class InterceptionStr static String ss;/ 要進(jìn)行截取操作的字符串static int n;/ 截取的字符串的字節(jié)數(shù)public static void main(String args) System.out.println( 請(qǐng)輸入字符串: );Scanner scStr = new Scanner(System.in);/ 從鍵盤獲取字符串ss = scStr.next();/將 Scanner 對(duì)象中的內(nèi)容以字符串的形式取出來(lái) System.out.println( 請(qǐng)輸入字節(jié)數(shù): ); Scan
3、ner scByte = new Scanner(System.in);/ 從鍵盤獲取字符串n = scByte.nextInt();/將Seanner對(duì)象中的內(nèi)容以數(shù)值的形式取出來(lái)Interception(setValue();/ 方法與方法間的套用publie statie String setValue() / 此方法的作用是將字符串轉(zhuǎn)換成字符串?dāng)?shù)組String string = new Stringss.length();/ 創(chuàng)建一個(gè)字符數(shù)組 stringfor (int i = 0; i string.length; i+) stringi = ss.substring(i, i +
4、 1);/將字符串ss中的第i個(gè)字符取出,放入字符數(shù)組中string中return string;/ 將這個(gè)字符數(shù)組返回public static void Interception(String string) int count = 0;String m = u4e00-u9fa5;/ 漢字的正則表達(dá)試System.out.println( 以每 + n + 字節(jié) 劃分的字符串如下所示: );for (int i = 0; i string.length; i+) if (stringi.matches(m) / 將字符數(shù)組中的每一 個(gè)元素與表則表達(dá)式進(jìn)行匹配,如果相同則返回 true c
5、ount = count + 2;/ 如果當(dāng)前字符是漢字,計(jì)數(shù)器 count 就加 2 else count = count + 1;/ 如果當(dāng)前字符不是漢字,計(jì)數(shù)器 count 就加 1if (count n) /如果當(dāng)前計(jì)數(shù)器count的值小于n,則輸出當(dāng)前字符System.out.print(stringi); else if (count = n) /如果當(dāng)前計(jì)數(shù)器count的值等于n,則輸出當(dāng)前字符System.out.print(stringi);count = 0;System.out.println();/ 內(nèi)循環(huán)結(jié)果,則需要換行,起到控制打印格式的作用 else count
6、= 0;/如果當(dāng)前計(jì)數(shù)器 count 的值大于n,則計(jì)數(shù)器count清零,接著執(zhí)行外部循環(huán)System.out.println();17.1Java基礎(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)頭尾元素互換,所以可以釆用取利用臨時(shí)變量的方 法來(lái)進(jìn)行元素交換。參考答案具體代碼實(shí)現(xiàn)如下:package programe;
7、import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class HuHuanDemo public static void main(String args) print();public static int write() BufferedReader buf = newBufferedReader10;/* 申請(qǐng)緩沖數(shù)組 */int n;/* 開(kāi)關(guān)量和中間量 */int array = new int10;for (i nt i = 0; i 10
8、; i+)/* 賦值 */bufi = new BufferedReader(newInputStreamReader(System.in);/* 給每個(gè)緩沖區(qū)定義 */do/* 判斷是否是空串,如是則重新輸入 */n = 1;System.out.print(請(qǐng)輸入第 ” + (i + 1) + 個(gè)整數(shù):”);try /* 建立一個(gè)異常捕獲 */arrayi = Integer.parseInt(bufi.readLine();/* 執(zhí)行串變整數(shù) */* Integer.parseInt(str) - str轉(zhuǎn)成 int 型 bufi.readLine() -*從系統(tǒng)輸入緩沖區(qū)讀入字符流給b
9、uf 緩沖區(qū)并返回字符串*/ catch (NumberFormatException e)/*捕獲異常 */System.out.pri ntln(數(shù)據(jù)輸入錯(cuò)誤請(qǐng)重新輸入 );/* 處理異常 */n = 0; catch (IOException e) e.printStackTrace(); while (n = 0);return array;public static void print() int ary = write();int s;System.out.println(n 你輸入的數(shù)組是 :); for (int i = 0; i 10; i+)/* 輸出原數(shù)組 */ Sys
10、tem.out.print(aryi + );for (i nt i = 0; i 5; i+)/* 對(duì)換 */s = aryi;aryi = ary9 - i;ary9 - i = s;System.out.println(n 對(duì)換后的數(shù)組是 :);for (int i = 0; i 10; i+)/* 輸出對(duì)換后數(shù)組 */System.out.print(aryi + );System.out.println();17.1Java基礎(chǔ)編程試題(3)面試題 3 怎樣實(shí)現(xiàn)元素排序考題題干(1)用Java實(shí)現(xiàn)一種排序。(2) Java類實(shí)現(xiàn)序列化的方法是什么?( 3) 在COLLECTIO框架中
11、,如果實(shí)現(xiàn)自然比較方法,則需要實(shí)現(xiàn)什么樣的接口?試題分析排序是程序員經(jīng)常遇到的,也是基本的技巧之一,一般的排序方法有插入 排序、冒泡排序、選擇排序、 Shell 排序、快速排序、歸并排序、堆排序、 SortUtil 等。下面詳細(xì)介紹 3 種排序方法。1 冒泡排序( Bubble Sort)最簡(jiǎn)單的排序方法是冒泡排序法。這種方法的基本思想是,將待排序的元 素看作是豎著排列的 氣泡,較小的元素比較輕,從而要往上浮。在冒泡排序算 法中要對(duì)這個(gè) 氣泡序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這 個(gè)序列,并時(shí)刻注意兩個(gè)相鄰元素的順序是否正確。如果發(fā)現(xiàn)兩個(gè)相鄰元素的 順序不對(duì),即 輕的元素在下面,
12、就交換它們的位置。顯然,處理一遍之后, 最輕 的元素就浮到了最高位置;處理兩遍之后,次輕的元素就浮到了次高位置。在進(jìn)行第二遍處理時(shí),由于最高位置上的元素 已是最輕元素,所以不必檢查。一般地,第 i 遍處理時(shí),不必檢查第 i 高位置 以上的元素,因?yàn)榻?jīng)過(guò)前面 i-1 遍的處理,它們已正確地排序。2選擇排序( Selection Sort) 選擇排序的基本思想是,對(duì)待排序的記錄序列進(jìn)行 n-1 遍的處理,第 1 遍 處理是將L仁n中最小者與L1交換位置,第2遍處理是將L2.n中最小者與 L2交換位置,,第i遍處理是將Li.n中最小者與Li交換位置。這樣,經(jīng)過(guò) i 遍處理之后,前 i 個(gè)記錄的位置就
13、已經(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-1 Lj則L1.i已排好序,第i遍處理就結(jié)束了;否則交換 Li與Li-1的位置,繼續(xù)比較Li-1和 Li-2,直到找到某一個(gè)位置j (1 j-)i,使得Lj Lj+1為止。簡(jiǎn)言之,插入排序就是
14、每一步都將一個(gè)待排數(shù)據(jù)按其大小插入到已經(jīng)排序 的數(shù)據(jù)中的適當(dāng)位置,直到全部插入完畢。參考答案( 1 )具體代碼實(shí)現(xiàn)如下:package programe;import java.util.*;class InsertionSort ArrayList list;/ num 指的是數(shù)據(jù)的個(gè)數(shù), mod 指的是可以產(chǎn)生隨機(jī)數(shù)的范圍在1mod之間public InsertionSort(int num, int mod) list = new ArrayList(num);Random dom = new Random();System.out.println( 排序之前的數(shù)組 :); for (i
15、nt i = 0; i num; i+) list.add(new Integer(Math.abs (dom.nextInt() % mod + 1); System.out.println(list + i + = + list.get(i);public void SortIt() Integer tempInt;int MaxSize = 1;for (int i = 1; i = (Integer) list.get(MaxSize - 1) .intValue() list.add(MaxSize, tempInt);MaxSize+; else for (int j = 0; j
16、 = tempInt .intValue() list.add(j, tempInt);MaxSize+;break;System.out.println( 排序之后的數(shù)組 :);for (int i = 0; i list.size(); i+) System.out.println(list + i + = + list.get(i); public static void main(String args) InsertionSort is = new InsertionSort(10, 100);is.SortIt();17.1Java基礎(chǔ)編程試題(4)面試題 4 怎樣實(shí)現(xiàn) Singl
17、eton 模式編程考題題干請(qǐng)編寫一個(gè) Singleton 模式的程序。試題分析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 的get In sta nee方法獲取對(duì)它的引用,繼而調(diào)用其中的方法。參考答案(兩種實(shí)
18、現(xiàn)方法,取一即可)paekage programe;publie elass Singleton private Singleton() / 注意這是 private 只供內(nèi)部調(diào)用private final statie Singleton instanee = new Singleton();/這里提供了一個(gè)供外部訪問(wèn)本class的靜態(tài)方法,可以直接訪問(wèn)public static Singleton getInstance() return instance;或者:package programe;public class Singleton private static Singleton
19、 instance = null;public static synchronized Singleton getInstance() / 使用時(shí)生成實(shí)例,提高了效率!if (instance = null)instance = new Singleton();return instance;面試題 5 哥德巴赫猜想的近似證明考題題干哥德巴赫猜想是說(shuō)任何一個(gè)大于 2 的偶數(shù)都能表示為兩個(gè)素?cái)?shù)之和。請(qǐng)編 寫一個(gè)Java程序,驗(yàn)證1100內(nèi)哥德巴赫猜想的正確性,也就是近似證明哥德 巴赫猜想。試題分析可以應(yīng)用枚舉的方法列出1100內(nèi)的所有偶數(shù)。然后逐一驗(yàn)證每個(gè)偶數(shù)是 否滿足哥德巴赫猜想的論證。如果有
20、一個(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)如下:package programe;public class Guess public static void main(String args) System.out.pri ntl n(” 在 1100 范圍內(nèi),現(xiàn)在開(kāi)始證實(shí)哥德巴赫猜想: );if (Testify_Guess(1, 100) System.out.pri n
21、tl n(” 在 1100 范圍內(nèi),哥德巴赫猜想是正確的。 ); else System.out.println(哥德巴赫猜想是錯(cuò)誤的);public static boolean Testify_Guess(int low, int high) / 判斷 1100 范圍內(nèi)的所有偶數(shù)是否符合哥德巴赫猜想,符合則返回 true ,反之則返回 falseint i, j = 0; boolean flag = true;for (i = low; i 2)/在1100之間選取大于2的偶數(shù)進(jìn)行猜想測(cè)試 if (isGoldbach(i) j+;/j 用來(lái)控制輸出格式,每行輸出 5 個(gè)數(shù)據(jù) if (j
22、 = 5) System.out.println();j = 0; else flag = false;break; return flag;public static boolean isGoldbach(int a) / 判斷參數(shù) a 是否符合哥德巴赫猜想int i;boolean flag = false;for (i = 1; i = a / 2; i+) if (isPrime(i) & isPrime(a - i)/ 根據(jù)試題分析中的表達(dá)式,傳入相關(guān)的兩個(gè)參數(shù) flag = true;System.out.print(a + = + i + + + (a - i) + ); bre
23、ak;/ 只要有一個(gè)符合條件的就可以退出循環(huán),判斷下一個(gè)偶數(shù)return flag;public static boolean isPrime(int i) / 判斷參數(shù) i 是否是素?cái)?shù),是則返回 true 反之則返回 false int n;boolean flag = true;if (1 = i)/ 1 本身 不是素?cái)?shù),因此需把這個(gè)特殊的數(shù)字拋出 flag = false;for (n = 2; n en|8A deiAmseH 飛畫 II uoisjeAuogjoiunouuv ssep siqnd Ueuueosin ire/e loduui Jde|/|qseHinneAer lo
24、duui euujojjeqiju 門沖嘆引切可 loduuipublic static final String YUAN = 元;public static final String JIAO = 角 ;public static final String FEN = 分 ;public static final String DOT = .;private static AmountOfConversion formatter = null;/ 創(chuàng)建 AmountOfConversion 的實(shí)例對(duì)象/ 創(chuàng)建初始化一個(gè) HashMap 對(duì)象private HashMap NumberMap
25、 = new HashMap();private HashMap HighnumberofMoney = new HashMap();/ 創(chuàng)建初始化一個(gè) NumberFormat 對(duì)象private NumberFormat numberFormat = NumberFormat.getInstance();private AmountOfConversion() / 在用 new 創(chuàng)建 AmountOfConversion 對(duì)象時(shí), 為 HashMap 對(duì)象進(jìn)行 key-value 的映射 numberFormat.setMaximumFractionDigits(4);/ 設(shè)置數(shù)據(jù)的小數(shù)部
26、分的最大位數(shù)是 4 位 numberFormat.setMinimumFractionDigits(2);/ 設(shè)置數(shù)據(jù)的小數(shù)部分的最小位數(shù)是 2 位 numberFormat.setGroupingUsed(false);/* 設(shè)置此格式中是不可以使用組。如果設(shè)置可以使用組,則數(shù) 1234567 可能被格式化為 1,234,567*/NumberMap.put(0, ZERO);NumberMap.put(1, ONE);NumberMap.put(2, TWO);NumberMap.put(3, THREE);NumberMap.put(4, FOUR);NumberMap.put(5, F
27、IVE);NumberMap.put(6, SIX);NumberMap.put(7, SEVEN);NumberMap.put(8, EIGHT);NumberMap.put(9, NINE);NumberMap.put(DOT, DOT);HighnumberofMoney.put(1, TEN);HighnumberofMoney.put(2, HUNDRED);HighnumberofMoney.put(3, THOUSAND);HighnumberofMoney.put(4, TEN_THOUSAND);HighnumberofMoney.put(5, TEN);Highnumber
28、ofMoney.put(6, HUNDRED);HighnumberofMoney.put(7, THOUSAND);HighnumberofMoney.put(8, HUNDRED_MILLION); public static AmountOfConversion getInstance() / 判斷 AmountOfConversion 對(duì)象 formatter 是否初始化if (formatter = null)formatter = new AmountOfConversion();return formatter;/ 進(jìn)行金額轉(zhuǎn)換的多種數(shù)據(jù)類型public String forma
29、t(String moneyStr) String result = 不能進(jìn)行金額轉(zhuǎn)換! ; if(isConversion(moneyStr) result = convertIntegerTochinese(moneyStr);result = convertPointTochinese(result);return result;public String format(double moneyDouble) return format(numberFormat.format(moneyDouble); public String format(int moneyInt) return
30、format(numberFormat.format(moneyInt);public String format(long moneyLong) return format(numberFormat.format(moneyLong);public String format(Number moneyNum) return format(numberFormat.format(moneyNum);private String convertIntegerTochinese(String moneyStr) / 將參數(shù)中傳入的阿拉伯?dāng)?shù)字轉(zhuǎn)換成中文String result;StringBuff
31、er C2CStrBufer = new StringBuffer();for (int i = 0; i 0; i-) C2CStrBufer.insert(i, HighnumberofMoney.get(EMPTY+ moneyPatternCursor); moneyPatternCursor = moneyPatternCursor = 8 ? 1: moneyPatternCursor + 1;String fractionPart = C2CStrBufer.substring(C2CStrBufer .indexOf(.);C2CStrBufer.delete(C2CStrBu
32、fer.indexOf(.),C2CStrBufer.length();while (C2CStrBufer.i ndexOf(零拾)!= -1) C2CStrBufer.replace(C2CStrBufer.i ndexOf零拾),C2CStrBufer.i ndexOf(零拾)+ 2, ZERO);while (C2CStrBufer.i ndexOf(零佰)!= -1) C2CStrBufer.replace(C2CStrBufer.i ndexOf零佰),C2CStrBufer.i ndexOf(零佰)+ 2, ZERO);while (C2CStrBufer.i ndexOf(零仟
33、)!= -1) C2CStrBufer.replace(C2CStrBufer.i ndexOf零仟),C2CStrBufer.i ndexOf(零仟)+ 2, ZERO);while (C2CStrBufer.i ndexOf(零萬(wàn))!= -1) C2CStrBufer.replace(C2CStrBufer.i ndexOf零萬(wàn)),C2CStrBufer.i ndexOf(零萬(wàn))+ 2, TEN_THOUSAND);while (C2CStrBufer.i ndexOf(零億)!= -1) C2CStrBufer.replace(C2CStrBufer.i ndexOf零億),C2CStr
34、Bufer.i ndexOf(零億)+ 2, HUNDRED_MILLION); while (C2CStrBufer.i ndexOf(零零)!= -1) C2CStrBufer.replace(C2CStrBufer.i ndexOf零零),C2CStrBufer.i ndexOf(零零)+ 2, ZERO);if (C2CStrBufer.lastIndexOf(ZERO) = C2CStrBufer.length() - 1)C2CStrBufer.delete(C2CStrBufer.length() - 1,C2CStrBufer.length();C2CStrBufer.appe
35、nd(fractionPart);result = C2CStrBufer.toString();return result;private String convertPointTochinese(String moneyStr) / 對(duì)小數(shù)點(diǎn)后面的數(shù)字進(jìn)行漢字處理String result;StringBuffer C2CStrBufer = new StringBuffer(moneyStr); int indexOfDot = C2CStrBufer.indexOf(DOT);C2CStrBufer.replace(indexOfDot, indexOfDot + 1, YUAN);C
36、2CStrBufer.insert(C2CStrBufer.length() - 1, JIAO);C2CStrBufer.insert(C2CStrBufer.length(), FEN);if (C2CStrBufer.indexOf(零角零分)!= -1)/ 沒(méi)有零頭,加整C2CStrBufer.replace(C2CStrBufer.indexOf零角零分),C2CStrBufer.length(), 整);else if (C2CStrBufer. in dexOf(零 分)!= -1)/ 沒(méi)有零分,加整C2CStrBufer.replace(C2CStrBufer.i ndexOf
37、零分),C2CStrBufer.length(), 整);else if (C2CStrBufer.indexOf(零角)!= -1)C2CStrBufer.delete(C2CStrBufer.i ndexOf零角),C2CStrBufer.i ndexOf(零角)+ 2);result = C2CStrBufer.toString();return result;private boolean isConversion(String moneyStr) / 判斷參數(shù)傳來(lái)的數(shù)據(jù)是否符合進(jìn)行轉(zhuǎn)換的條件int fractionDigits = moneyStr.length() - moneyS
38、tr.indexOf(DOT) - 1;boolean flag = true;if (fractionDigits 2)System.out.println( 金額 + moneyStr + 的小數(shù)位多于兩位。 );/ 精度不能比分低 flag = false; return flag; public static void main(String args) System.out.println( 請(qǐng)輸入金額數(shù): );Scanner scanner = new Scanner(System.in);String str = scanner.next();System.out.println
39、( 轉(zhuǎn)換后的金額為: );System.out.println(getInstance().format(new Double(str); 17.1Java基礎(chǔ)編程試題(6) 程序的輸出結(jié)果如圖 17.5所示。圖 17.5 程序輸出結(jié)果 面試題 7 愛(ài)因斯坦的階梯問(wèn)題 考題題干愛(ài)因斯坦曾出過(guò)這樣一道有趣的數(shù)學(xué)題:有一個(gè)長(zhǎng)階梯,每步上 2 階,最 后剩 1階;若每步上 3階,最后剩 2階;若每步上 5 階,最后剩 4階;若每步 上 6 階,最后剩 5 階;只有每步上 7 階,最后一階也不剩。請(qǐng)問(wèn)該階梯至少有 多少階。編寫一個(gè)Java程序解決該問(wèn)題。試題分析從上面的描述中,可以把這個(gè)問(wèn)題用數(shù)學(xué)方程
40、式的形式表達(dá)出來(lái),代碼如 下:x%2=1x%3=2x%5=4x%6=5x%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ù)就是本題的答 案,沿著這條思路,本題的具體代碼如下。參考答案具體代碼實(shí)現(xiàn)如下:package core_java;public class StairsFlight public static void main(String args) int x = 7, i, res = 0;7 350 之間11
41、9boolean flag = false;for (i = 1; i = 50; i+) / 將循環(huán)次數(shù)定為 50,表示尋找范圍為 if (x % 2 = 1) & (x % 3 = 2)& (x % 5 = 4) & (x % 6 = 5) res = x;flag = true;break;x = 7 * (i + 1);if (true = flag)System.out.println( 關(guān)于愛(ài)因 斯坦的階梯問(wèn)題的答案是: + res); elseSystem.out.println(在 7 的 150 倍這個(gè)范圍內(nèi)沒(méi)有結(jié)果 );程序的輸出結(jié)果如下: 關(guān)于愛(ài)因斯坦的階梯問(wèn)題的答案是:
42、面試題 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)?586!=685,故 586不是回文數(shù)字。參考答案具體代碼實(shí)現(xiàn)如下:package core_java;import java.util.Scanner;public class Palindrome public static
43、 void main(String args) int n;System.out.println( 請(qǐng)輸入一個(gè)整數(shù): );Scanner scByte = new Scanner(System.in);n = scByte.nextInt();if (isPalindrome(n)System.out.println(n + 是回文! );elseSystem.out.println(n + 不是回文! ); public static boolean isPalindrome(int n) / 判斷輸入的數(shù)字是否是回文 int m = reverse(n);if (m = n) return
44、 true;else return false; public static int reverse(int i) / 將輸入的數(shù)字進(jìn)行倒置 int s, j = 0;s = i; while (s != 0) j = j * 10 + s % 10;s = s / 10; return j;程序的輸出結(jié)果如圖 17.6 所示圖 17.6 程序輸出結(jié)果面試題9根據(jù)表結(jié)構(gòu)寫出相應(yīng)的SQL語(yǔ)句考題題干有 3 個(gè)表:Employee 職工 (工號(hào),姓名,性別,年齡,部門 )(num,name,sex, age,departmentno ) Wage 工資(編號(hào),工資金額 )( No,amount )
45、Attend 出勤(工號(hào),工資編號(hào),出勤率 )(num,No,attendance)請(qǐng)根據(jù)要求,編寫相應(yīng)的SQL語(yǔ)句。(1) 寫一個(gè)SQL語(yǔ)句,查詢工資金額為8000的職工工號(hào)和姓名。(2) 寫一個(gè)SQL語(yǔ)句,查詢職工張三的出勤率。(3) 寫一個(gè)SQL語(yǔ)句,查詢3次出勤率為0的職工姓名和工號(hào)。(4) 寫一個(gè)SQL語(yǔ)句,查詢出勤率為10并且工資金額小于2500的職工信 息。參考答案( 1 ) select eml. num, from Employee emlwhere (select count(*) from Attend where num =eml.numand No
46、= (select No from Wage where amount =8000 );( 2) select amount from Wage where No in(select No from Atte nd where num=(select num from Employeewhere n ame二張三 );( 3) select eml.num, from Employee emlwhere (select count(*) from Attend where num=eml.num and attendance=0) = 3;( 4) select * from
47、 Employee emlwhere (select No from Attend where num=eml.num and attendance=10) =(select No from Wage where amount2500 );面試題10編寫MySQL數(shù)據(jù)庫(kù)的JDBC連接考題題干請(qǐng)編寫訪問(wèn)MySQL數(shù)據(jù)庫(kù)的JDBC!接代碼,查詢數(shù)據(jù)庫(kù)中user表的全部 內(nèi)容,并打印出來(lái)。試題分析讀者必須掌握常見(jiàn)的數(shù)據(jù)庫(kù)訪問(wèn)內(nèi)容,包括驅(qū)動(dòng)、端口等參數(shù)。參考答案具體代碼實(shí)現(xiàn)如下:import java.sql.Connection;import java.sql.DriverManager;impor
48、t java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DbConn private static DataSource ds = null;private static Connection conn = null;public static Connection getConn_jdbc() /使用JDBC連接數(shù)據(jù)庫(kù)try String url = jdbc:mysql:/ localhost:3306/bbsdb;String username = root;Stri
49、ng password = pla;Class.forName(com.mysql.jdbc.Driver). newInstance();conn = DriverManager.getConnection(url, username, password);return conn; catch (Exception e) System.err.println( 數(shù)據(jù)庫(kù)連接 異常 : + e.getMessage(); return null;public void CloseConn() / 關(guān)閉數(shù)據(jù)庫(kù)連接try conn.close(); catch (Exception e) Syste
50、m.err.println( 數(shù)據(jù)庫(kù)連接關(guān) 閉異常 : + e.getMessage();public static void main(String a) / 測(cè)試數(shù)據(jù)庫(kù)連接Connection conn;DbConn dc = new DbConn(); conn = dc.getConn_jdbc(); try Statement stmt = conn.createStatement();String strSql = select * from user;ResultSet rs = stmt.executeQuery(strSql); while (rs.next() System
51、.out.println(name : + rs.getString(name); catch (SQLException e) e.printStackTrace(); finally dc.CloseC onn ();/注意,必須在最后關(guān)閉數(shù)據(jù)庫(kù)連接,否則將嚴(yán)重影響系統(tǒng)性能面試題11怎樣用SAX解析XML考題題干用SAX方式解析Information.xml , XML文件如下:張春來(lái) v/namevcollege涉卜國(guó)語(yǔ)學(xué)院vtelephon/telephone男,1975年生,碩士,05年調(diào)入省機(jī)關(guān)v/person試題分析需要掌握XML解析的主要兩種方式,以及
52、如何解析XML及其注意事項(xiàng)參考答案具體代碼實(shí)現(xiàn)如下:/ 文件名: SAXAnalysis.javaimport java.io.*;import java.util.Hashtable;import org.xml.sax.*;public class SAXAnalysis extends HandlerBaseprivate Hashtable table = new Hashtable();private String currentElement = null;private String currentValue = null;public void setTable(Hashtab
53、le table)this.table = table;public Hashtable getTable()return table;public void startElement(String tag, AttributeList attrs) throws SAXExceptioncurrentElement = tag;public void characters(char ch, int start, int length) throws SAXExceptioncurrentValue = new String(ch, start, length);public void end
54、Element(String name) throws SAXExceptionif (currentElement.equals(name)table.put(currentElement, currentValue);JSP內(nèi)容顯示源碼jiexi.jsp:vTITLE剖析 XML文件 Information.xmlv/TITLE%KH.)uRuudino K. + (.seiouJBuuis Meu)ie6 e|qemseM(6u!4S) + KG丄兒 + . v占丄JuRuudino K. + (Quoqde冋bums /veu)記6丄qseq(6u山s)+ KG丄兒 + . 呈!甲澄迪
55、vpai二OQO uojxd丄v占丄JuRuudino KH11+(11e6enoo11)6uuis /veu)記6丄qseq(6u山s)+ KG丄兒 + . 型羽孤甫vpai二OQO luojxa丄v占丄JuRuudino K. + (C.eujeu.JBuuis /veu)記6丄qseq(6u山s)+ KG丄兒 + . v占丄JuRuudino K. WYOlldV9x|,=d3ad0a mi日V_LJupu!d川o J()e|qene6 je|pueq = eiqeiqseq e|qeiqseH J(je|pueq l(jepeej)eojnosndui /veu)esjed ds J(
56、)sisA|euvxVS Meu =eipueq sisA|euvxVS J () j es J e d x VSMe u s = dsesjedxVS JOeouesu |/veu AjoioejjesjedxVS = jds AjopejjesjedxVS Uesjedesjed eiijepeeyeiij /veu =epeejepeeyenj Kjujx uoneujJOjuiAaJeHd eu = e|ij eiy % 程序的輸出結(jié)果如圖17.7所示。面試題12利用Servelt的doPost方法實(shí)現(xiàn) 表單內(nèi)容的讀取考題題干編寫一個(gè)HTML文件,利用Servelt的doPost方法實(shí)
57、現(xiàn)Form表單內(nèi)容的讀 取。試題分析要求熟練掌握Servelt部署和web.xml的配置,以及HttpServlet對(duì)象的兩個(gè) 主要方法doGet()和doPost()的使用。參考答案具體代碼實(shí)現(xiàn)如下:/ 程序名稱: login.htmllogin.htmlInput your name:Choose your hobbies:WritingMountaineeringTourismvINPUT TY PE二SUBMIT NAME提交v/bodyv/htmlJava文件loginServlet.java的代碼如下所示:package lesson;import java.io.*;import
58、 javax.servlet.*;import javax.servlet.http.*;public class loginServlet extends HttpServlet/重寫doPost方法public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException/ 首先設(shè)置頭信息res.setContentType(text/html); req.setCharacterEncoding(gbk);/ 用 writer 方法返回響應(yīng)數(shù)據(jù)PrintWr
59、iter out = res.getWriter(); out.println(); out.println(ShowMessage On Servlet);out.println(name: + req.getParameter(name); out.println();out.println(love: + req.getParameter(hobbies); out.println();out.close();public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,I
60、OException doPost(req,res);程序的輸出結(jié)果如下所示( 1) login.html 界面如圖 17.8 所示。(2) Servlet界面如圖17.9所示。面試題13編程實(shí)現(xiàn)Servlet的記錄訪問(wèn)功能考題題干編寫一個(gè)Servlet,功能要求為:記錄訪問(wèn)該 Servlet的客戶端IP和訪問(wèn)時(shí)間,把記錄寫入 client_ip.log 文件。 client_ip.log 里的格式大致如下:9:36 2005-4-8 9:36 2005-4-8 參考答案/ 文件名: WriteFileServlet.javaimport java.io
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球元件參數(shù)測(cè)試儀行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2024年科普知識(shí)競(jìng)賽試題庫(kù)及答案(共70題)
- 2024年青少年禁毒知識(shí)競(jìng)賽小學(xué)組題庫(kù)及答案(共60題)
- 2025年度特種鋼材進(jìn)口與國(guó)內(nèi)銷售合作協(xié)議
- 2025年度應(yīng)急響應(yīng)個(gè)人勞務(wù)派遣服務(wù)合同示范文本2篇
- 二零二五年度車庫(kù)租賃及停車場(chǎng)運(yùn)營(yíng)管理合同4篇
- 數(shù)字化背景下學(xué)校師德師風(fēng)教育的創(chuàng)新發(fā)展
- 數(shù)學(xué)教育與兒童發(fā)展游戲化教學(xué)的意義
- 二零二五年度鋁扣板藝術(shù)裝飾施工合同3篇
- 二零二五年度采砂場(chǎng)環(huán)境保護(hù)與修復(fù)合同3篇
- JB-T 8532-2023 脈沖噴吹類袋式除塵器
- 深圳小學(xué)英語(yǔ)單詞表(中英文)
- 護(hù)理質(zhì)量反饋內(nèi)容
- 山東省濟(jì)寧市2023年中考數(shù)學(xué)試題(附真題答案)
- 抖音搜索用戶分析報(bào)告
- 板帶生產(chǎn)工藝熱連軋帶鋼生產(chǎn)
- 鉆孔灌注樁技術(shù)規(guī)范
- 2023-2024學(xué)年北師大版必修二unit 5 humans and nature lesson 3 Race to the pole 教學(xué)設(shè)計(jì)
- 供貨進(jìn)度計(jì)劃
- 國(guó)際尿失禁咨詢委員會(huì)尿失禁問(wèn)卷表
- 彌漫大B細(xì)胞淋巴瘤護(hù)理查房
評(píng)論
0/150
提交評(píng)論