南昌大學(xué)Java實驗(全)_第1頁
南昌大學(xué)Java實驗(全)_第2頁
南昌大學(xué)Java實驗(全)_第3頁
南昌大學(xué)Java實驗(全)_第4頁
南昌大學(xué)Java實驗(全)_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java語言程序設(shè)計實 驗 指 導(dǎo)目錄實驗一 Java開發(fā)環(huán)境的熟悉2實驗二 Java程序設(shè)計語言基礎(chǔ)9實驗三 字符串(String類)的使用19實驗四 類與對象35實驗五 繼承與多態(tài)48實驗六 GUI編程及事件處理61實驗七 Java中的多線程86實驗八 輸入輸出流90南昌大學(xué)實驗報告學(xué)生姓名: 學(xué) 號: 專業(yè)班級: 實驗類型:驗證綜合設(shè)計創(chuàng)新 實驗日期:2013-03-02實驗一 Java開發(fā)環(huán)境的熟悉一、實驗?zāi)康?、掌握下載JDK 軟件包、Eclipse軟件的方法;2、掌握設(shè)置Java 程序運行環(huán)境的方法;3、掌握編寫與運行Java 程序的方法;4、了解Java 語言的概貌;5、為學(xué)習(xí)J

2、ava 語言和進行Java 程序的實驗做好準備工作。二、實驗內(nèi)容1、JDK 的下載與安裝下載能安裝在相應(yīng)的操作系統(tǒng)類型中的J2SE系統(tǒng)安裝程序。為了建立基于SDK 的Java 運行環(huán)境,需要先下載Sun 的免費SDK 軟件包。SDK 包含了一整套開發(fā)工具,其中包含對編程最有用的是Java 編譯器、Applet 查看器和Java 解釋器。在瀏覽器中輸入 公司網(wǎng)站頁面,然后在里面找到下載的鏈接進行下載就行。目前的版本最高是Jdk1.7,但是在使用上更多的還是使用Jdk1.7版本。下載完后進行安裝,和一般的軟件安裝過程差不多,自己選擇目錄進行jdk的安裝。在本實驗中假設(shè)jdk的安裝路徑是“C:jdk

3、1.7.0_05“。2、Java運行環(huán)境配置jdk 中的工具都是命令行工具,需要從命令行即MSDOS 提示符下運行它們。很多人可能會不習(xí)慣,但這是Sun 特意采取的策略,為的是把精力更多地投入到Java 語言本身而不是花在開發(fā)工具上。為了能正確方便的使用JDK,可手工配置一些Windows 的環(huán)境變量. (1)設(shè)置Windows 98在C:autoexec.bat 文件中,添加以下內(nèi)容:set path=%path%; C:jdk1.7.0_05binset classpath=.; C:jdk1.7.0_05lib;%classpath%C:jdk1.7.0_05bin 為程序安裝路徑,如果

4、安裝時做了修改,這里必須做出相應(yīng)的修改。“set path”語句設(shè)置Java 編譯運行程序的路徑,“set classpath”語句設(shè)置Java 包的路徑,其中的“.”表示在當前目錄下均可執(zhí)行Java 程序。autoexec.bat 文件修改后存盤,然后重新啟動計算機,即完成了設(shè)置。(2)設(shè)置Windows 7/XP/NT/2000以Windows XP 為例說明設(shè)置過程。在桌面“我的電腦”圖標上單擊右鍵,選擇“屬性”菜單,單擊高級選項卡。在“高級”選項卡中單擊“環(huán)境變量”按鈕。將出現(xiàn)“環(huán)境變量”設(shè)置界面,在“系統(tǒng)變量”框中選擇“Path”,然后單擊“編輯”按鈕,在出現(xiàn)的“編輯系統(tǒng)變量”對話框

5、中,在“變量值”欄的命令前添加“C:jdk1.7.0_05bin;”,用同樣方法設(shè)置環(huán)境變量“classpath”,其值為“C:jdk1.7.0_05lib;”。設(shè)置完成后,單擊“開始”“所有程序”“附件”“命令提示符”打開DOS 窗口,在命令提示符下輸入“java”或“javac”,回車后,如果出現(xiàn)其用法參數(shù)提示信息,則安裝正確。三、實驗要求1、了解java集成開發(fā)環(huán)境jdk的結(jié)構(gòu);2、掌握jdk的環(huán)境變量的配置,理解一個java程序的運行過程;3、能基本上清楚java程序的組成,簡單的查找一些程序錯誤;4、能分辨出應(yīng)用程序何小應(yīng)用程序的不同,及他們在運行上的差別; 四、實驗環(huán)境1

6、、PC微機;2、DOS操作系統(tǒng)或 Windows 操作系統(tǒng);3、jdk程序集成環(huán)境Eclipse 五、實驗步驟1、先安裝好jdk;2、配置環(huán)境變量;3、書寫java程序;4、運行程序,查看結(jié)果。 六、源代碼及測試數(shù)據(jù)配置環(huán)境變量截圖:Pathclasspathjava_home七、實驗報告要求(學(xué)生完成)實驗報告應(yīng)包括以下幾個部分:1、 jdk的簡單介紹;答:JDK(Java Development Kit)是Sun Microsystems針對Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK。JDK 是整個Java的核心,包括了Java運行環(huán)境

7、、Java工具和Java基礎(chǔ)類庫。2、環(huán)境變量的設(shè)置;答:見, 六、源代碼及測試數(shù)據(jù)。3、 應(yīng)用程序和小應(yīng)用程序的運行過程;答:運用程序運行:執(zhí)行JDK完成應(yīng)用程序的運行過程分為三步:1. 編寫。利用文本編輯工具(記事本)編寫生成java程序,命名為FirstApp.java,并將該文件放在C:javaExamples目錄中。2. 編譯。調(diào)用Java編譯器javac.exe,將源文件FirstApp.java編譯生成類文件FirstApp.class。3. 運行。調(diào)用Java解釋器java.exe對類文件FirstApp.class解釋執(zhí)行,輸出程序的執(zhí)行結(jié)果。具體過程:-編寫jav

8、a代碼-修改后綴名為.java編譯->執(zhí)行-.class類文件。小程序(Applet)運行:Java小運用程序(Applet)是一種嵌入在HTML文檔中的java程序,需要在web環(huán)境下運行。-小程序(Applet)編譯:生成.class類文件執(zhí)行WelcomeApplet.html:4、 程序的測試結(jié)果和問題;答:測試結(jié)果如各截圖所示。問題有以下幾點:1. 在編寫代碼行 public static void main(String args)時,想當然地把static給忽略掉,導(dǎo)致代碼運行不了。具體原因現(xiàn)在還不清楚,望在以后的學(xué)習(xí)中解決。2. 執(zhí)行包含小程序(Applet)的html代

9、碼時,瀏覽器出現(xiàn)安全性的彈框,比較麻煩。5、 實驗總結(jié)。答:初步認識了java語言和jdk環(huán)境編程的使用方法,希望在日后的學(xué)習(xí)中不斷強化技能。八、思考題(學(xué)生完成)1、如何將應(yīng)用程序和小應(yīng)用程序放到一個java程序中去,及該java程序即可以作為應(yīng)用程序運行,也可以作為小應(yīng)用程序運行?答:可將小程序(Applet)當做應(yīng)用程序的一個類,用運用程序中的main()函數(shù)調(diào)用applet,最后用javac和java命令編譯執(zhí)行應(yīng)用程序。2、熟悉一個用于java程序開發(fā)的工具,建議大家使用Eclipse。如何使用Eclipse來執(zhí)行java程序?答:具體過程分為:編寫->測試->編譯-&g

10、t;執(zhí)行,Eclipse和visual c+環(huán)境下編寫c+代碼的編寫執(zhí)行操作大同小異。3、JDK和JRE的區(qū)別?答:JDK就是Java Development Kit.簡單的說JDK是面向開發(fā)人員使用的SDK,它提供了Java的開發(fā)環(huán)境和運行環(huán)境。SDK是Software Development Kit 一般指軟件開發(fā)包,可以包括函數(shù)庫、編譯程序等。JRE是Java Runtime Enviroment是指Java的運行環(huán)境,是面向Java程序的使用者,而不是開發(fā)者。南昌大學(xué)實驗報告學(xué)生姓名: 學(xué) 號: 專業(yè)班級: 實驗類型:驗證綜合設(shè)計創(chuàng)新 實驗日期:2013-03-14實驗二 Java程序

11、設(shè)計語言基礎(chǔ)一、實驗?zāi)康?、了解Java 的數(shù)據(jù)類型;2、掌握各種變量的聲明方式;3、理解運算符的優(yōu)先級;4、掌握Java 基本數(shù)據(jù)類型、運算符與表達式、數(shù)組的使用方法;5、理解Java 程序語法結(jié)構(gòu),掌握順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)語法的程序設(shè)計方法;6、通過以上內(nèi)容,掌握Java 語言的編程規(guī)則。二、實驗內(nèi)容讀入一個浮點數(shù)值,將其轉(zhuǎn)換為中文金額的大寫方式,如123.45,轉(zhuǎn)換為:壹佰貳拾叁元肆角伍分。要求:(1)當金額為整數(shù)時,只表示整數(shù)部分,省略小數(shù)部分,并添加“整”字。例如,123表示為:壹佰貳拾叁元整;(2)當金額中含有連續(xù)的0時,只需寫一個“零”即可,例如, 10005表示為:壹萬

12、零伍元整;(3)10的表示方式,例如,110元表示為:壹佰壹拾元整,而10則表示為:拾元整。提示:將字符串型轉(zhuǎn)換為浮點型可以用Float.parseFloat(s)函數(shù)轉(zhuǎn)換。三、實驗要求1、能正確的進行數(shù)據(jù)轉(zhuǎn)換;2、能在輸入數(shù)據(jù)錯誤的情況下給出提示。四、實驗環(huán)境1、PC微機;2、DOS操作系統(tǒng)或 Windows 操作系統(tǒng);3、Eclipse程序集成環(huán)境。 五、實驗步驟1、 根據(jù)題目要求,畫出程序流程圖;2、給出本程序的java數(shù)據(jù)結(jié)構(gòu);3、編寫出程序;4、調(diào)試程序:給出一些測試數(shù)據(jù),檢查輸出結(jié)果。 六、測試數(shù)據(jù) 輸入數(shù)據(jù):1、1232、123113、123104、01231

13、1正確結(jié)果: 1、壹佰二十三元 2、壹佰二十三元一角一分 3、壹佰二十三元一角 4、壹佰二十三元一角一分七、實驗報告(學(xué)生完成)實驗報告應(yīng)包括以下幾個部分:1、 程序流程圖;(略)。2、程序的數(shù)據(jù)結(jié)構(gòu)設(shè)計;本實驗設(shè)計從鍵盤輸入一個double型(0-99999999.9999)數(shù)據(jù)money,定義兩個整形數(shù)組Array1和Array2分別存放money的整數(shù)位各位上的數(shù)值和小數(shù)位各位上的數(shù)值。另外定義兩個數(shù)組b1和b2;存放Array1中萬位和個位各位上的數(shù)值。通過輸出算法Shuchu()實現(xiàn)整數(shù)位(0-9999)數(shù)值的輸出,通過輸出算法DouShuchu()實現(xiàn)小數(shù)位的輸出,從而實現(xiàn)整個數(shù)據(jù)

14、的中文大寫格式的輸出。3、程序的源代碼(程序中必須有相關(guān)的注釋信息)源代碼:import java.util.Scanner;public class CMoney static String num="零","壹","貳","叁","肆","伍","陸","柒","捌","玖"/定義字符串數(shù)組num存放數(shù)字的中文大寫;static String Shu="仟","佰

15、","拾","0"/定義字符串數(shù)組Shu存放10的次方;static String DouShu="角","分","厘","毫"/定義字符串數(shù)組DouShu存放元以下的四個單位;public static int getInitLength(int a)/正向獲取數(shù)組中連續(xù)“0”字符的個數(shù);int i=0;int t=0;for(;i<=3;i+)if(ai=0)t+;elsebreak;return t;public static int isDouzero

16、(int a)/判斷數(shù)組元素是否為“1001”;if (a0!=0&&a3!=0)&&(a1=0&&a2=0)return 1;elsereturn 0;public static int getIntoLength(int a)/反向獲取數(shù)組中連續(xù)“0”字符的個數(shù);int i=3;int t=0;for(;i>=0;i-)if(ai=0)t+;elsebreak;return t;public static void Output(int a)/四位整數(shù)存放數(shù)組的格式化輸出(9999以內(nèi));int pl=4-getInitLength(a

17、);/開始的整數(shù)位;int gl=getIntoLength(a);/數(shù)組末尾連續(xù)零的個數(shù);String nh1=new String pl*2;/定義一個字符串數(shù)組nh1存放將num和Shu數(shù)組整合而成的新字符串數(shù)組;int i=0,j=0;for(;i<pl*2|j<pl;i=i+2,j+)/整合到字符串數(shù)組nh1;nh1i=numa4-pl+j;nh1i+1=Shu4-pl+j;if(isDouzero(a)=1)/排除“1001”連續(xù)兩個“0”的情況;System.out.printf(nh10+nh11+nh12+nh16);else /分別考慮四位整數(shù)存放數(shù)組末尾連續(xù)“

18、0”的個數(shù)實現(xiàn)字符串數(shù)組nh1的輸出;for(j=0;j<4;j+)if(gl=j)for(i=0;i<(pl-gl)*2;i+)if(nh1i="0")/避免字符串數(shù)組Shu中“0”字符的輸出;break;elseSystem.out.printf(nh1i);if(nh1i="零")/避免“零佰、零仟”等的輸出;i+;break;else continue;public static void DouOutput(int a)/小數(shù)點后各個位數(shù)的輸出;int IntoLen=getIntoLength(a);int InitLen=get

19、InitLength(a);if(InitLen=4)/無小數(shù)位的整數(shù)輸出后綴“元整”的輸出;System.out.print("元整");else System.out.print("元");if(getInitLength(a)>0)System.out.print("零");String nh2;nh2=new String2*(4-IntoLen);int i,j;for(i=0,j=0;i<2*(4-IntoLen);i+=2,j+)nh2i=numaj;nh2i+1=DouShuj;for(i=0;i<(

20、4-IntoLen)*2;i+)if(nh2i="零")/避免“零角、零分”等的輸出;i+;continue;elseSystem.out.print(nh2i);public static void main(String args)double money;while(true)System.out.println("請輸入數(shù)值(0-99999999):"); Scanner scan=new Scanner(System.in); money=scan.nextDouble();if(money<0|money>99999999)Sys

21、tem.out.println("輸入錯誤!請重新輸入。");System.out.println("");continue;elseSystem.out.println("");break;int money1=(int)(money/1);/取整數(shù)位存放到money1中;double money2=(double)(money-(double)(money1);/取小數(shù)位存放到money2中;int t1=10000000;int t2=1000;int Array1;/定義兩個整形數(shù)組分別順序存放整數(shù)位和小數(shù)位的數(shù)字;int A

22、rray2;Array1=new int8;Array2=new int4;for(int i=0;i<8;i+)/初始化數(shù)組;Array1i=0;for(int i=0;i<4;i+)/初始化數(shù)組;Array2i=0;for(int i=0;i<8;i+)/取整數(shù)位的數(shù)字存入數(shù)組;Array1i=money1/t1;money1=money1-Array1i*t1;t1/=10;money2=money2*10000;for(int i=0;i<4;i+)/取小數(shù)位的數(shù)字存入數(shù)組;Array2i=(int)(money2/t2);money2=money2-Array

23、2i*t2;t2/=10;int b1;int b2;/定義兩個數(shù)組存放整數(shù)位萬位和個位的最大值為“9999”的數(shù)值;b1=new int4;b2=new int4;for(int i=0;i<4;i+)b1i=Array1i;b2i=Array1i+4;/System.out.printf("getIntoLength(b1)="+getIntoLength(b1);/System.out.printf("getInitLength(b1)="+getInitLength(b1);System.out.printf("中文大寫格式化輸出

24、數(shù)據(jù)為: ");/輸出/Output(b1);if(getInitLength(Array1)<4)Output(b1);System.out.printf("萬");if(getInitLength(b2)>0 && money1%10000!=0)System.out.printf("零");Output(b2);DouOutput(Array2);System.out.println("");System.out.println("");elseOutput(b2);Do

25、uOutput(Array2);System.out.println("");System.out.println("");/*char judge;System.out.println("是否繼續(xù)(y/n)? ");Scanner scan=new Scanner(System.in);String j;j=scan.nextLine();if(judge='y')main(String args);*/end;4、程序運行結(jié)果的分析。(1)實驗測試數(shù)據(jù)的結(jié)果分析 輸入:123輸入:123.11輸入:123.10輸入

26、:0123.11(2)自由輸入數(shù)據(jù)測試輸入:74080920.0230輸入:9405043.0001八、思考題(學(xué)生完成)1、Java語言中的循環(huán)語句與其他語言中的有何區(qū)別?答:for控制循環(huán)語句中多重條件不能像C+中一樣用“,”分隔開,而需要用邏輯詞將多個條件語句連接起來;While()控制循環(huán)語句“()”中只能是true或者是false的boolean類型數(shù)據(jù),而C+則可以是0和非零的數(shù)據(jù)或者bool型的數(shù)據(jù)。其他差異有待發(fā)現(xiàn)。2、本實驗中的測試數(shù)據(jù)前綴0和后綴0怎樣處理比較好?答:不能說自己處理得比較好,僅談?wù)勛约旱目捶?。實驗中我通過兩個函數(shù)getInitLength(inta)和get

27、IntoLength(inta)分別獲取數(shù)組a的前綴零和后綴零,通過數(shù)組大小(數(shù)組是給定大小的)、前綴零和后綴零可以得到待輸出的字符元素個數(shù)、和零在不同位置的情況,從而實現(xiàn)算法從編寫到輸出。南昌大學(xué)實驗報告學(xué)生姓名: 學(xué) 號: 專業(yè)班級: 實驗類型:驗證綜合設(shè)計創(chuàng)新 實驗日期:2013-03-24實驗三 字符串(String類)的使用一、實驗?zāi)康?、區(qū)分String類和StringBuffer類;2、掌握String類和StringBuffer類的基本使用方法3、通過上機編寫和運行關(guān)于字符串的程序來加深對String類和StringBuffer類等的了解二、實驗內(nèi)容本實驗的內(nèi)容為:編寫一個與居

28、民身份證有關(guān)的程序,可以是Applet或者Application。要求創(chuàng)建一個類,該類至少具有以下3個方法:1)檢驗居民身份證的真?zhèn)?,若為假身份證,需要提供其虛假信息,比如居民出生年月日有錯等。2)獲取真實居民身份證的信息,該信息包括4個部分: 該身份證是新身份證還是舊身份證。 該居民身份證的地址碼,如果同學(xué)有最新縣及縣以上行政區(qū)劃代碼可得到居民身份證詳細的省、市、縣(區(qū))的名稱,若沒有則只需顯示地址碼信息即可。 該居民的出生年月日。 該居民的性別。3)將15位的舊身份證轉(zhuǎn)換成18位的新身份證。【參考資料】1)舊身份證共有15位,其格式如下:假設(shè)身份證號碼為:440524800101001地

29、址 碼出生日期碼順 序 碼440524800101001廣東省汕頭市潮陽縣出生年出生月出生日2)新身份證共有18位,其格式如下:假設(shè)身份證號碼為 址 碼出生日期碼順序碼校驗東省汕頭市潮陽縣出生年出生月出生日3)地址碼表示編碼對象常住戶口所在縣(市、旗、區(qū))的行政區(qū)劃代碼,按 GB/T 2260的規(guī)定執(zhí)行,有條件的同學(xué)可以到“中華人民共和國國家統(tǒng)計局”網(wǎng)站()查看最新縣及縣以上行政區(qū)劃代碼(截止2003年6月30日),該文章的網(wǎng)址為“4)生日期碼表示編碼對象出生的年、月、日,按 GB/T 7408 的規(guī)定執(zhí)行。年、月

30、、日代碼之間不用分隔符。舊身份證號碼的出生日期碼只有6位,而新身份證的出生日期碼有8位,年份采用4位表示。5)順序碼表示在同一地址碼所標識的區(qū)域范圍內(nèi),對同年、同月、同日出生的人編定的順序號,順序碼的奇數(shù)分配給男性,偶數(shù)分配給女性,該順序碼有3位。6)校驗碼采用ISO 7064:1983,MOD 11-2 校驗碼系統(tǒng),該校驗碼只有1位,在新身份證中被采用,其公式為(ai×Wi)(mod 11),在公式中: i表示號碼字符從右至左包括校驗碼在內(nèi)的位置序號; ai表示第i位置上的號碼字符值; Wi表示第i位置上的加權(quán)因子,其數(shù)值依據(jù)公式Wi=2(i-1)(mod 11)計算得出。 在求出

31、(ai×Wi)(mod 11)值后依據(jù)下表得到校驗碼:(ai×Wi)(mod 11)值012345678910校驗碼字符值10X98765432三、實驗要求1、要求學(xué)生在上機實驗前一定要非常清楚并靈活運用該章所講過的內(nèi)容;2、在上機實驗前編寫好實驗內(nèi)容要求的程序,以便上機實驗時調(diào)試、修改等。3、上機實驗后,每位學(xué)生必須對該次實驗內(nèi)容寫一份實驗報告,包括程序內(nèi)容、調(diào)試過程、運行情況和結(jié)果等。四、實驗環(huán)境1、PC微機;2、DOS操作系統(tǒng)或 Windows 操作系統(tǒng);3、Eclipse程序集成環(huán)境。 五、實驗步驟1、根據(jù)題目要求,畫出程序流程圖;2、給出本程序的java

32、數(shù)據(jù)結(jié)構(gòu);3、編寫出程序;4、調(diào)試程序:給出一些測試數(shù)據(jù),檢查輸出結(jié)果。 七、實驗報告(學(xué)生完成)實驗報告應(yīng)包括以下幾個部分:1、 程序流程圖;(略)。2、程序的數(shù)據(jù)結(jié)構(gòu)設(shè)計;定義五個String類Str_ID、Str_area、Str_Bir、Str_sex、Str_code分別存放身份證號、地區(qū)信息、出生日期、性別、校驗碼,通過String類和StringBuffer類的使用從各String中提取比較信息實現(xiàn)各功能。3、程序的源代碼(必須包含相關(guān)的注釋信息)源代碼:/begin Program;import java.util.Scanner;public class IDVie

33、wer public static String Search_01="市轄區(qū)","東湖區(qū)","西湖區(qū)","青云譜區(qū)","灣里區(qū)","青山湖區(qū)","南昌縣","新建縣","安義縣","進賢縣"/定義數(shù)組存放區(qū)名;public static String Search_02="01","02","03","04",&qu

34、ot;05","11","21","22","23","24"/定義數(shù)組存放個區(qū)的區(qū)號;public static String Search_03="零","一","二","三","四","五","六","七","八","九"public static String Search_04=

35、"1","0","X","9","8","7","6","5","4","3","2"/身份證尾號數(shù)組; public static Integer Search_05=7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2;/計算尾號對應(yīng)的mod; public static int getArray_num(String st

36、r,String s)/取數(shù)組元素在數(shù)組中的對應(yīng)序號;int i=0;while(true)if(stri.equals(s)!=true)i+;continue;elsebreak;return i;public static boolean isArea(String str_ID,String str_Area)/判斷地區(qū)真?zhèn)?;String a;a=str_ID.substring(4,6);int b=str_Area.length();if(!str_Area.substring(str_Area.lastIndexOf("市",b-1)+1,b).equals(

37、Search_01getArray_num(Search_02,a)&&str_ID.substring(0,3)!="3601")return false;else return true;public static boolean isBir(String str_ID,String str_Bir)/判斷出生日期真?zhèn)?;int num_Y=Integer.parseInt(str_ID.substring(6,10);int num_M=Integer.parseInt(str_ID.substring(10,12);int num_D=Integer.

38、parseInt(str_ID.substring(12,14);if(num_Y<2013&&num_Y>1880&&num_M>0&&num_M<13&&num_D>0&&num_D<32)/日期越限處理;return str_Bir.equals(str_ID.substring(6,14);elsereturn false;public static StringBuffer viewBir(String str_ID)/中文顯示出生日期實現(xiàn)(年/月/日)顯示日期;Str

39、ing str=new String();str=str_ID.substring(6,15);String str_c1=new String();String str_c2=new String();String str_c3=new String();StringBuffer strB=new StringBuffer();StringBuffer strB_1=new StringBuffer();StringBuffer strB_2=new StringBuffer();StringBuffer strB_3=new StringBuffer();for(int i=0;i<

40、2;i+)str_c2+=Search_03Integer.parseInt(str.substring(i+4,i+5);str_c3+=Search_03Integer.parseInt(str.substring(i+6,i+7);strB_1.append(str_c2);strB_2.append(str_c3);if(strB_1.substring(0,1).equals("零")strB_1.delete(0, 1);else if(strB_1.substring(0,1).equals("一")strB_1.replace(0, 1,

41、 "十");if(strB_1.substring(1,2).equals("零")strB_1.delete(1,2);elsestrB_1.insert(1,"十");if(strB_2.substring(0,1).equals("零")strB_2.delete(0, 1);else if(strB_2.substring(0,1).equals("一")strB_2.replace(0, 1, "十");if(strB_2.substring(1,2).equals

42、("零")strB_2.delete(1,2);elsestrB_2.insert(1,"十");strB_1.append("月");strB_2.append("日");for(int i=0;i<4;i+)str_c1+=Search_03Integer.parseInt(str.substring(i,i+1);str_c1+="年"strB.append(str_c1).append(strB_1).append(strB_2);return strB;public static

43、 boolean isSex(String str_ID,String str_Sex)/判斷性別真?zhèn)?;int s=Integer.parseInt(str_ID.substring(14,17);if(s%2=1&&str_Sex.equals("男")|(s%2=0&&str_Sex.equals("女")return true;elsereturn false;public static boolean isCode(String str_ID)/判斷校驗碼真?zhèn)危?int sigma = 0; for (int i=

44、0; i<17; i+) int ai = Integer.parseInt(str_ID.substring(i,i+1); int wi = Search_05i; sigma += ai * wi; int num = sigma % 11; String check_number = Search_04num; /return check_number; /System.out.println(check_number); if (!str_ID.substring(17).equals(check_number) return false; else return true;

45、public static StringBuffer getCheck_num(String str_ID)/計算校驗碼函數(shù); int sigma = 0; for (int i=0; i<17; i+) int ai = Integer.parseInt(str_ID.substring(i,i+1); int wi = Search_05i; sigma += ai * wi; int num = sigma % 11; StringBuffer check_number = new StringBuffer(); check_number.append(Search_04num);

46、 return check_number;public static void getInfo(String str_ID)/顯示身份證信息;String str_area=new String();String str_bir=new String();String str_sex=new String();str_area=str_ID.substring(4,6);str_bir=str_ID.substring(6,14);str_sex=str_ID.substring(16,17);System.out.println("-你身份證上顯示的地區(qū)信息為:江西省南昌市&quo

47、t;+Search_01getArray_num(Search_02,str_area);System.out.println("");System.out.println("-你身份證上顯示的出生年月日信息為:"+viewBir(str_ID);System.out.println("");System.out.printf("-你身份證上顯示的性別信息為:");if(Integer.parseInt(str_sex)%2=1)System.out.println("男");elseSyste

48、m.out.println("女");System.out.println("");public static boolean isNew(String str_ID)/判斷身份證的版本新舊;int len=str_ID.length();if(len=18)return true;elsereturn false;public static boolean lenError(String str_ID)/判斷輸入的身份證號長度是否違規(guī);int len=str_ID.length();if(len=18|len=15)return false;elser

49、eturn true;public static String transf_New(String str_ID)/將舊版15位身份證號轉(zhuǎn)換為新版18位身份證號;StringBuffer str=new StringBuffer();str.append(str_ID);str.insert(6,"19");str.append(getCheck_num(str.toString();return str.toString();public static boolean is_Here(String str_ID)/判斷是否為南昌地區(qū)的身份證;String str=new

50、String(str_ID.substring(0,4);if(!str.equals("3601")System.out.println("對不起,你輸入的信息顯示此身份證不在南昌地區(qū),請查詢!");return false;else return true;/主函數(shù);public static void main(String args)/main();String Str_ID=new String();/存放身份證號;String Str_sex=new String();/存放性別;String Str_bir=new String();/存放

51、出生日期;String Str_area=new String();/存放地區(qū);/*/transf_New功能測試;Str_ID="360121920726553"StringBuffer str=new StringBuffer();str.append(Str_ID);str.insert(6,"19");System.out.println(str+" "+str.length();System.out.println(getCheck_num(str.toString();/str.append(getCheck_num(St

52、r_ID);/System.out.print(str.toString();*/System.out.println("* 南昌各縣區(qū)市公民身份證信息識別 *");System.out.println("請選擇你要運行的功能(1/2/3):");System.out.println("1. 檢查身份證信息的真?zhèn)?");System.out.println("2. 獲取真實居民身份證的信息;");System.out.println("3. 將15位舊身份證轉(zhuǎn)換成18位的新身份證;");System.out.println("請選擇:");int select;Scanner scan=new Scanner(System.in);select=Integer.parseInt(scan.nextLine();switch(select)case 1:/檢查身份證信息的真?zhèn)?System.out.printf("請輸入身份證號:");Str_ID=scan.nextLine();System.out.println("你輸入的身份證號為: "+Str_ID);if(!is_Here(Str_ID)bre

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論