版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
JAVA語言程序設(shè)計
第一章概述
面向?qū)ο蠹夹g(shù)是程序設(shè)計方法學的一場革命,已成為計算機應(yīng)用開發(fā)領(lǐng)域的主流技術(shù)。面向?qū)ο蠹夹g(shù)能夠更逼真地模擬現(xiàn)實世界,使軟件開發(fā)人員按照認識客觀事物的思維方法進行軟件開發(fā),它所倡導的將數(shù)據(jù)與操作捆綁的程序設(shè)計風格,正好符合現(xiàn)代大規(guī)模軟件開發(fā)對高可靠性、易維護性和代碼重用性的要求和發(fā)展潮流。JAVA語言是21世紀開發(fā)應(yīng)用程序的首選工具。JAVA的發(fā)展歷史及特點JAVA語言是由SUN公司于1995年5月23日正式推出的純面向?qū)ο蟮某绦蛟O(shè)計語言,集安全性、簡單性、易用性和平臺無關(guān)性于一身并且特適合于網(wǎng)絡(luò)環(huán)境下編程使用。特點:簡單性、面向?qū)ο?、安全性、平臺獨立、多線程、網(wǎng)絡(luò)功能、執(zhí)行效率//文本打印程序Example1_1.javapublicclassExample1_1{publicstaticvoidmain(Stringargs[]){System.out.println("Hellojava!");}//main方法結(jié)束}//類Example1_1結(jié)束JAVA程序示例1-1運行結(jié)果:Hellojava!//C程序//例example1_1.cmain(){printf(“HelloC!”);}//C++程序//例example1_1.cppclassClassA{public:voidprint(){cout<<“HelloC++!”;}};main(){ClassAexp;exp.print();}//用多個語句打印一行文本publicclassExample1_1_1{publicstaticvoidmain(Stringargs[]){
System.out.print(“Hello”);System.out.println(“Java!”);}//main方法結(jié)束}//類Example1_1_1結(jié)束//用一個語句打印多行文本publicclassExample1_1_2{publicstaticvoidmain(Stringargs[]){System.out.print(“Hello\nJava\n!”);}//main方法結(jié)束}//類Example1_1_2結(jié)束運行結(jié)果:Hellojava!運行結(jié)果:Hellojava!JAVA程序組成由類組成區(qū)分大小寫類與類之間平行,不能嵌套主類只有一個,包含main()方法的類為主類源文件的名必須與主類名稱一致源文件必須以java為擴展名,通過文本編輯的源程序文件注意要改名面向?qū)ο蟪绦蛟O(shè)計的核心概念
類類庫(JavaAPI)屬于語言的一部分避免一切從頭做,實現(xiàn)軟件復用學習JAVA實際上學兩部分:
既要學習Java語言本身,以便編寫自己的類;
也要了解類庫。類庫是獨立的與編譯和運行環(huán)境沒有必然聯(lián)系,類庫需要逐步擴充盡可能使用類庫可以提高程序的運行性能和穩(wěn)定性程序通常由自定義類和類庫應(yīng)用共同構(gòu)建publicclassExample1_2{publicstaticvoidmain(Stringargs[]){Stringa=args[0];Stringb=args[1];System.out.println(a+""+b);System.out.println("值此新春佳節(jié)之際,祝賀您和您的家人");System.out.println("新春快樂工作順利身體健康闔家幸福");}}JAVA程序示例1-2該程序在執(zhí)行時,需要在命令行后面加上姓名和稱謂程序執(zhí)行命令路徑j(luò)avacExample1_2.java路徑j(luò)avaExample1_2王先生王先生值此新春佳節(jié)之際,祝賀您和您的家人新春快樂工作順利身體健康闔家幸福程序執(zhí)行結(jié)果練習修改程序例1_2:(1)把main改個名字,然后保存,運行?查看編譯結(jié)果,記錄下有關(guān)提示信息。(2)main方法前的修飾符public去掉,看編譯結(jié)果并記錄下提示信息(3)static去掉呢?(4)把arg[]改為int[],或String試試看(5)把arg改為別的名字,看程序編譯結(jié)果JAVA的開發(fā)及運行環(huán)境最基本的開發(fā)工具J2SDK:來源Http:///j2se/1.4/download.html網(wǎng)站免費下載系統(tǒng)設(shè)置1、雙擊“控制面板”的“系統(tǒng)”圖標
2、選擇”高級”選項,添加或修改環(huán)境變量path和classpath
如果J2SDK的安裝目錄為c:\jdk1.4,需將
path設(shè)置到c:\jdk1.4\binclasspath設(shè)置到c:\jdk1.4\lib\tools.jar和”.”JAVA源程序的編輯由任意一種文字編輯器如windows的寫字板產(chǎn)生文本文件即后綴為txt的文件,在更名為同名的以java為后綴的文件JAVA程序的執(zhí)行流程JAVA的平臺無關(guān)性Java開發(fā)/運行時環(huán)境Compile=編譯,翻譯為叫做Java字節(jié)碼(JVM的機器碼)的中間語言。Interpret=解釋,JVM分析和運行字節(jié)碼。Just-In-TimeCompiler=即時編譯器,把常執(zhí)行的機器碼放在內(nèi)存,再次執(zhí)行時直接從內(nèi)存取出,使執(zhí)行速度接近編譯語言的速度。JVM=Java虛擬機,編程語言與機器底層軟件和硬件之間的翻譯器。RuntimeSystem=運行時系統(tǒng),將Java程序編譯成適合Java虛擬機運行形態(tài)的軟件。它包含加載程序、動態(tài)連接庫,管理內(nèi)存,處理異常所必需的代碼,和一個Java虛擬機(Java解釋器)。Java程序的編譯執(zhí)行Javac.exeJava.exeJAVA的計算結(jié)構(gòu)A單機簡單、不支撐復雜系統(tǒng)、靈活、速度快B主機-終端數(shù)據(jù)集中、功能集中、I/O在終端、運算在主機、負荷重C客戶端/服務(wù)器C/S客戶端和服務(wù)器分別編寫程序D瀏覽器/服務(wù)器B/S客戶端只需安裝瀏覽器軟件只做服務(wù)器編程JAVACC++是否直譯式是否,編譯式否,編譯式編譯后是否產(chǎn)生機器碼否,產(chǎn)生一種接近機器碼的字節(jié)碼是是是否跨平臺是否,必須根據(jù)計算機平臺改變程序否,必須根據(jù)計算機平臺改變程序運行速度較C/C++稍慢快快是否有指針類型否,使用對象引用來代替指針是是是否具備繼承功能允許單一繼承否允許多重繼承JAVA和C/C++的差異編譯和運行JAVA程序1、編輯java源程序注意將.txt文件更名為同名.java文件2、進入命令提示符具體方法是進入”程序”菜單選”附件”再選”命令提示符”,為方便操作可將其拉入桌面3、使用ren命令將源程序更名為.java程序
renfilename.txtfilename.java4、編譯JAVA源程序,執(zhí)行javac.exe文件,具體命令為
javacfilename.java5、回到文本編輯器,修改編譯錯誤6、返回4,再編譯直至無誤,生成合法類文件
7、運行JAVA程序具體命令為
javafilename8、檢查運行結(jié)果,有錯返回5改錯,否則運行成功標識符和關(guān)鍵字
標識符identifier好像一個人生下來就要給他起個名字一樣,作為一種識別記號。計算機中的變量、常量、方法、類等也都是用名字來加以識別的,這種名字就是標識符。起名的方法有一種約定,即可以是一個字母或者是一串以字母開頭由字母、數(shù)字或符號組成的字符串。
1、符號只允許下劃線_和美元$符號
2、名字長度不限
3、注意英文字母大小寫代表不同含義
4、取名應(yīng)遵循易于理解、便于記憶的原則例如合法標識符Lotus_1wang$
非法標識符A?23ababstractdefaultgotooperatorsynchronibooleandoifouterthisbreakdoubleimplementspackagethrowbyteelseimportprivatethrowsbyvalueextendsinnerprotectedtransientcasefalseinstanceofPublictruecastfinalintresttrycatchfinallyinterfacereturnvarcharfloatlongshortvoidclassfornativestaticvolatileconstfuturenewsuperwhilecontinuegenericnullswitch關(guān)鍵字也稱保留字是程序設(shè)計語言本身已經(jīng)使用并賦予特定意義的一些標識符,編程人員在為自定義的標識起名時,不能與關(guān)鍵字同名。分隔符用來區(qū)分源程序中基本成分,便于代碼組織和理解。就像一篇文章如果沒有分隔符,文章的內(nèi)容很難理解。JAVA分隔符有注釋、空白符和普通分隔符三種注釋有三種形式即由/*注釋部分*/,/**注釋部分**/和//注釋部分空白符包括空格、回車、換行和制表符(Tab鍵)等符號JAVA普通分隔符有四種
1、花括號{}用來定義復合語句、方法體、類體及數(shù)據(jù)的初始化
2、分號;是語句的結(jié)束標志
3、逗號,分隔方法的參量和變量說明
4、冒號:說明語句標號JAVA分隔符數(shù)據(jù)類型與變量、常量數(shù)據(jù)是程序操作的對象,具有名稱、類型和作用域等特征。數(shù)據(jù)由標識符命名;數(shù)據(jù)的類型表示數(shù)據(jù)的性質(zhì)、占用內(nèi)存多少和存放形式;數(shù)據(jù)的作用域表示程序中可以使用數(shù)據(jù)的范圍。JAVA數(shù)據(jù)類型分為基本型(簡單類型)和引用類型(復合類型)兩種?;绢愋?primitivetype)包括整型(integer)、浮點型(floatingpointnumber)字符型(character)和布爾型(boolean)。引用類型(referencetype)包括數(shù)組型(array)、類(class)和接口(interface)數(shù)據(jù)類型所占字節(jié)表示范圍long(長整型)8-9223372036854775808~
9223372036854775807int(整型)4-2147483648~2147483647short(短整型)2-32768~32767byte(位)1-128~127char(字符)10~255boolean(布爾)1布爾值只能使用true或falsefloat(單精度)4-3.4E38~3.4E38double(雙精度)8-1.7E308~1.7E308Java的基本數(shù)據(jù)類型常量
常量是指在程序運行過程中其值始終保持不變的量。根據(jù)數(shù)據(jù)類型劃分對應(yīng)有整型常量、浮點型常量、布爾型常量和字符串常量等。
整型類型又細分為long,int,short和byte四種類型,對應(yīng)也有這四種整型常量,長整型常量后面要加上字母L或l。
計算機中數(shù)的表示廣泛采用十進制、八進制和十六進制三種形式。十進制數(shù)即為通常使用的形式八進制數(shù)必須以0開頭,如034,099等十六進制數(shù)以0x開頭,如0xAB,0xF2等變量
變量就是在程序運行過程中其值可以被改變的量。在程序設(shè)計過程中,要想使用變量,首先要對變量進行聲明,聲明有兩點,第一是聲明變量的名稱,第二是聲明變量的數(shù)據(jù)類型。變量要先經(jīng)過聲明,然后才能進行賦值和使用。類型名是由關(guān)鍵字決定的整型有l(wèi)ongintshortbyte浮點型有floatdouble默認為double單精數(shù)后面加f字符型為char字符串為String字符串用雙引號括住“”布爾型為boolean//輸出JAVA整數(shù)類型數(shù)據(jù)publicclassInteger2_1{publicstaticvoidmain(Stringargs[]){bytea=015;//八進制數(shù)
byteb=20;//十進制數(shù)
bytec=0x25;//十六進制數(shù)
shortx=30;//短整型
longy=1234567890123l;//長整型
System.out.println("a="+a+""+"b="+b+""+"c="+c);System.out.println("x="+x+""+"y="+y);}}輸出結(jié)果是:a=13b=20c=37X=30y=1234567890123//輸出給定的JAVA單精度和雙精度類型數(shù)據(jù)publicclassFloating2_2{publicstaticvoidmain(Stringargs[]){floata=35.45f;doubleb=3.56e18;System.out.println("a="+a);System.out.println("b="+b);}}輸出結(jié)果如下a=5.45b=3.56E18//輸出給定的JAVA字符類型常數(shù)publicclassCharacter2_3{publicstaticvoidmain(Stringargs[]){charch1='a';charch2=80;charch3='\n';charch4='\070';//八進制Unicode碼
charch5='\u0050';//十六進制Unicode碼
System.out.println("ch1="+ch1+"ch2="+ch2+ch3);System.out.println("ch4="+ch4+"ch5="+ch5);}}運行結(jié)果如下ch1=ach2=p(ch3是回車符)
ch4=8ch5=p//輸出給定的JAVA字符串數(shù)據(jù)類型以及運算結(jié)果publicclassCharacter2_4{publicstaticvoidmain(Stringargs[]){Stringstr1="abc";Stringstr2="\n";Stringstr3="80\070\u0050";System.out.println("str1="+str1+"str2="+str2);System.out.println("str3="+str3);}}運行結(jié)果如下str1=abcstr2=str3=808p//輸出給定的JAVA邏輯類型數(shù)據(jù)publicclassLogic2_5{publicstaticvoidmain(Stringargs[]){booleaninstance1=true;booleaninstance2=false;System.out.println("邏輯狀態(tài)1="+instance1);System.out.println("邏輯狀態(tài)2="+instance2);}}運行結(jié)果如下邏輯狀態(tài)1=true邏輯狀態(tài)2=falseJAVA的運算符
JAVA語言按運算符對數(shù)據(jù)的運算結(jié)果分類有算術(shù)運算符、邏輯運算符、關(guān)系運算符、賦值運算符和位運算符;按運算符運算的數(shù)據(jù)個數(shù)分類可分為一元運算符、二元運算符和三元運算符。算術(shù)運算符有五種加+減–乘
*除
/取余%其中除減號可作為一元運算符外均為二元運算符另外兩個經(jīng)常使用的一元運算符是加一運算++和減一運算--i++相當于i變量加1再放入i中;先使用后加一。++i相當于i變量加1再放入i中;先加一再使用。i--相當于i變量加1再放入i中;先使用后減一。--i相當于i變量加1再放入i中;先減一再使用。語句與表達式
語句是構(gòu)成程序的基本單位,語句具有獨立完整的含義,可以對計算機發(fā)出操作命令,每一條語句都必須以分號;作為結(jié)束符。
表達式是用運算符把操作數(shù)(變量、常量和方法)連接起來表達某種運算或含義的式子。一個表達式可以同時包括多個操作,而操作的順序由各運算符的優(yōu)先級及括號來決定。其中運算符是算術(shù)運算符稱為算術(shù)表達式;運算符為邏輯運算符稱為邏輯表達式。語句和表達式的區(qū)別與聯(lián)系
1、語句是程序的組成部分;表達式是語句的組成部分
2、語句有結(jié)束符;表達式?jīng)]有結(jié)束符
3、語句是針對程序而言的;表達式是數(shù)學上的計算概念
4、算式的計算結(jié)果=號在右邊;賦值語句=號在表達式左邊//JAVA整數(shù)類型數(shù)據(jù)除法演示publicclassTwo_perate2_6{publicstaticvoidmain(Stringargs[]){inta=15;intb=7;intc=b/a;intd=a/b;inte=15%7;System.out.println("a="+a+""+"b="+b+""+"c="+c);System.out.println("d="+d+""+"e="+e);}}計算結(jié)果如下:c=0d=2//將一元操作符放在變量的前或后,輸出其操作結(jié)果publicclassOne_Oparate2_7{publicstaticvoidmain(Stringargs[]){inti=15,j;j=i++;System.out.println("i++="+j);j=++i;System.out.println("++i="+j);j=--i;System.out.println("--i="+j);j=i--;System.out.println("i--="+j);j=-i;System.out.println("-i="+j);System.out.println("i="+i);}}運行結(jié)果是i++=15++i=17--i=16i--=16–i=-15i=15運算符運算舉例含義~位反~x將x逐位取反&位與x&yx、y逐位進行與操作|位或x|yx、y逐位進行或操作^位異或x^yx、y逐位進行相同取0相異取1<<左移x<<yx向左移動,位數(shù)是y>>右移x>>yx向右移動,位數(shù)是y>>>不帶符號右移x>>>yx向右移動,位數(shù)是y,空位補0位運算符運算符運算舉例含義運算符運算舉例含義+=加法x+=yx=x+y&=與x&=yx=x&y-=減法x-=yx=x-y|=或x|=yx=x|y*=乘法x*=yx=x*y^=異或x^=yx=x^y/=除法x/=yx=x/y<<=左移x<<=yx=x<<y%=取余x%=yx=x%y>>=右移x>>=yx=x>>y>>>=不帶符號右移x>>>=yx=x>>>y二元算術(shù)運算符、邏輯運算符和位運算符的簡捷使用運算符描述優(yōu)先級結(jié)合性.[]()域、數(shù)組、括號1從左至右++---!~一元操作符2從右至左*/%乘、除、取余3從左至右+-加、減4從左至右<<>>>>>位運算5從左至右<<=>>=關(guān)系運算6從左至右==!=邏輯運算7從左至右&按位與8從左至右^按位異或9從左至右|按位或10從左至右&&邏輯與11從左至右||邏輯或12從左至右?:條件運算符13從右至左=*=/=%=+=-=,<<=>>=>>>=&=^=|=賦值運算符
14從右至左運算符的優(yōu)先級//輸出JAVA加減乘除混合運算的結(jié)果,注意算術(shù)運算符的//優(yōu)先級publicclassExcellence2_8{publicstaticvoidmain(Stringargs[]){inta=20;intb=7;intd=b*++a;inte=(a/(++b));System.out.println("a="+a+""+"b="+b);System.out.println("d="+d+""+"e="+e);}}運行結(jié)果d=147e=2//通過對給定常數(shù)進行大小比較,將比較結(jié)果作為邏輯值輸出publicclassLogical2_9{publicstaticvoidmain(Stringargs[]){intx=15;inty=7;booleanc=(x>y);booleand=((float)x/y==(double)x/y);System.out.println("c="+c);System.out.println("d="+d);}}程序運行結(jié)果c=trued=false//通過比較字符串,將字符串比較結(jié)果輸出publicclassSign2_10{publicstaticvoidmain(Stringargs[]){inttime=10;Stringweek="Monday";if(week=="Sunday"|week=="Saturday")System.out.println("今天我休息");elseif(time>8&&time<12)System.out.println("今天你遲到了");}}程序運行結(jié)果今天你遲到了數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型的轉(zhuǎn)換分為“自動類型轉(zhuǎn)換”和“強制類型轉(zhuǎn)換”。轉(zhuǎn)換要符合兩個條件
1、轉(zhuǎn)換前的數(shù)據(jù)類型與轉(zhuǎn)換后的類型兼容
2、轉(zhuǎn)換后的數(shù)據(jù)類型比轉(zhuǎn)換前的數(shù)據(jù)類型表示的范圍大強制類型轉(zhuǎn)換是程序員根據(jù)計算的需要強制數(shù)據(jù)進行類型轉(zhuǎn)換,具體辦法是在變量前加上帶括號的數(shù)據(jù)類型關(guān)鍵字。要求關(guān)鍵字必須與要強制轉(zhuǎn)換的數(shù)據(jù)類型兼容。表達式的類型轉(zhuǎn)換在不同數(shù)據(jù)類型數(shù)據(jù)進行計算時總是由表示范圍較小的數(shù)據(jù)類型轉(zhuǎn)換為表示范圍較大的數(shù)據(jù)類型//不同整數(shù)數(shù)據(jù)類型的轉(zhuǎn)換publicclassChange2_11{publicstaticvoidmain(Stringargs[]){shorta=10;intb=34567;intc=a*b;floatd=123.45f;System.out.println("c="+c);System.out.println("num="+d/b);}}程序運行結(jié)果如下:c=345670num=0.0035713252//強制整數(shù)數(shù)據(jù)類型的轉(zhuǎn)換publicclassChange2_12{publicstaticvoidmain(Stringargs[]){inta=15;intb=7;floatc=a/b;floatd=(float)a/b;inte=a/(int)d;System.out.println("c="+c+"d="+d+"e="+e);
}}計算結(jié)果如下c=2.0d=2.142857e=2作業(yè)與練習1、填空:1)_____用于說明和解釋一個程序和改善它的可讀性。2)_____類型聲明一個單精度浮點變量。3)Java語言在使用浮點數(shù)數(shù)據(jù)時默認的類型是_____類型。4)如下代碼的打印結(jié)果是什么?System.out.print(“*”);System.out.print(“***”);System.out.print(“*****”);System.out.print(“****”);System.out.println(“**”);2。判斷題:1)Java運算符是從左到右計算的。2)后面這些是合法的變量名:_under_bar_,m928134,t5,j7,her_sales$,his_$account_total,a,b$,c,z和z2。If語句是最常用的條件判斷語句,根據(jù)if語句邏輯表達式的取值,決定程序的執(zhí)行路線。if語句格式if(條件){
執(zhí)行(語句塊1)}括號中的條件是邏輯表達式,其值為true執(zhí)行語句塊1,否則直接執(zhí)行if語句的下一條語句?;ɡㄌ栔械亩鄠€語句被看成是一條復合語句//本程序從命令行輸入兩個數(shù)據(jù)與給定的值50進行比較,//若大于50則輸出結(jié)果
publicclassCondition3_1{publicstaticvoidmain(Stringargs[]){intx,serial,y=0;x=Integer.parseInt(args[0]);serial=Integer.parseInt(args[1]);if(x>50)y=x*serial;System.out.println("y="+y);}}程序運行結(jié)果路徑j(luò)avaCondition3_15511Y=605//本程序從命令行輸入兩個數(shù)據(jù)與給定的值50進行比較,若大于//50則輸出結(jié)果//與例3-1的區(qū)別是if語句后面有花括號
publicclassCondition3_2{publicstaticvoidmain(Stringargs[]){intx,serial,y;x=Integer.parseInt(args[0]);serial=Integer.parseInt(args[1]);if(x>50){y=x*serial;System.out.println("y="+y);}}}當x<=50時比較本程序與上程序的輸出差別條件?語句塊2語句塊1truefalseif…else語句格式if(條件){(語句塊1)}else{(語句塊2)}括號中的條件是邏輯表達式,其值為true執(zhí)行語句塊1,其值為false執(zhí)行語句塊2。兩種情況在完成各自的任務(wù)之后,于if的下一條語句會合。//該程序執(zhí)行時不要忘記在命令行中給出參量值publicclassExam3_3{publicstaticvoidmain(Stringargs[]){floatscore;score=Integer.parseInt(args[0]);if(score>=60.0)System.out.println("祝賀您的考試成績通過了!");elseSystem.out.println("很遺憾,您的考試成績沒有通過");}}本程序通過對鍵盤輸入的score值進行判斷,給出不同的輸出結(jié)果if(條件)
語句塊1elseif(條件)
語句塊2elseif(條件)
語句塊3elseif(條件)
語句塊4if語句的嵌套所謂嵌套是指程序中存在有多個if語句。如果一條if語句之后還有if語句,或else語句之后還有if語句,就構(gòu)成了if條件語句的嵌套。//給出任意三個數(shù),通過使用if語句嵌套,將它們//按從小到大排序
importjavax.swing.JOptionPane;publicclassArrange3_4{publicstaticvoidmain(Stringargs[]){Stringstr;doublex,y,z,t;str=JOptionPane.showInputDialog("請輸入第一個數(shù)");x=Double.parseDouble(str);str=JOptionPane.showInputDialog("請輸入第二個數(shù)");y=Double.parseDouble(str);str=JOptionPane.showInputDialog("請輸入第三個數(shù)");z=Double.parseDouble(str);if(x>y)
{
t=x;x=y;y=t;if(x>z){t=x;x=z;z=t;}else
if(y>z){t=y;y=z;z=t;}}
elseif(x>z){t=x;x=z;z=t;if(y>z){t=y;y=z;z=t;}}if(y>z){t=y;y=z;z=t;}System.out.println("最小值="+x);System.out.println("中間值="+y);System.out.println("最大值="+z);System.exit(0);}}運行結(jié)果最小值=33.0中間值=43.0最大值=554.0X、Y、Z三個數(shù)按從小到大排序的邏輯框圖按X、Y、Z的六種排列順序進行檢查1、2、31、3、22、1、32、3、13、1、23、2、1switch語句條件語句塊1語句塊3語句塊4語句塊2case1case2case3case4switch(表達式){case值1:語句塊1;
break;
case值2:語句塊2;
break;
case值3:語句塊3;
break;……case值n:語句塊n;
break;
default:
語句塊n+1;}1、switch語句中的表達式的數(shù)據(jù)類型可以是byte、char、short、int類型,不允許浮點型和long型。2、根據(jù)表達式值與case語句后面的匹配情況決定程序執(zhí)行的分支3、每個case語句都要有break語句4、不匹配的情況執(zhí)行default語句//通過鍵盤輸入月份,輸出相應(yīng)月份的英文單詞publicclassMonth3_5{publicstaticvoidmain(Stringargs[]){intmonth;month=Short.parseShort(args[0]);switch(month){case1:System.out.println("January");break;case2:System.out.println("February");break;case3:System.out.println("March");break;case4:System.out.println("April");break;case5:System.out.println("May");break;case6:System.out.println("June");break;case7:System.out.println("July");break;case8:System.out.println("August");break;case9:System.out.println("September");break;case10:System.out.println("October");break;case11:System.out.println("Novenber");break;case12:System.out.println("December");break;defoult:System.out.println(“Inputdataerror");}}}注意月份是在命令行中給出的循環(huán)結(jié)構(gòu)控制由三種循環(huán)語句實現(xiàn),循環(huán)語句有循環(huán)體和循環(huán)條件兩部分組成。while語句的一般形式while(條件){
循環(huán)體}條件?循環(huán)體語句falsetruewhile循環(huán)語句流程圖//給定一個循環(huán)變量,采用while語句輸出循環(huán)變量的值
publicclassCyc3_6{publicstaticvoidmain(Stringargs[]){intm=4;while(m>0){m=m-1;System.out.println("m="+m);}}
}
程序運行結(jié)果m=3m=2m=1m=0do-while語句的一般形式do{循環(huán)體}while(條件)do-while語句的流程圖do-while語句與while語句的區(qū)別是本語句不管條件是否滿足都先進入循環(huán)體,即先進體后判斷;而while語句是先判斷,根據(jù)條件表達式的值決定是否進入循環(huán)體循環(huán)體語句條件?falsetrue//給定一個循環(huán)變量,采用do--while語句輸出循環(huán)變量的值
publicclassCyc3_7{publicstaticvoidmain(Stringargs[]){intm=4;do{m=m-1;System.out.println("m="+m);}while(m>0);}}程序運行結(jié)果m=3m=2m=1m=0考慮初值為m=0時,兩種循環(huán)語句執(zhí)行結(jié)果有何變化//打印正整數(shù)1--50中的奇數(shù)之和與偶數(shù)之和publicclassCyc3_8{publicstaticvoidmain(Stringargs[]){inti,oddsum,evensum;i=1;oddsum=0;evensum=0;do{if(i%2==0)evensum+=i;elseoddsum+=i;}while(++i<=50);System.out.println("奇數(shù)和="+oddsum);System.out.println("偶數(shù)和="+evensum);}
}程序運行結(jié)果奇數(shù)和=625偶數(shù)和=650//計算1+2+3+...+100publicclassSum3_9_1{publicstaticvoidmain(Stringargs[]){inti=1,sum=0;while(i<=100){sum+=i;//與sum=sum+i等價
i++;
}System.out.println("sum="+sum);}}程序運行結(jié)果sum=5050for語句的一般形式for(設(shè)定初值;循環(huán)條件;修改表達式)
{
循環(huán)體
}給定一個初值條件?修改表達式循環(huán)體語句for語句使用時需注意1、括號中的任何一個表達式都可以省略2、循環(huán)體中可以有空語句(以分號“;”結(jié)尾)3、初值和修改表達式可用“,”號得到多重表達式如:for(i=0,sum=0;i<=n;sum+=i,i++)System.out.println(i+”\t”+sum)//計算1+2+3+...+100publicclassSum3_9{publicstaticvoidmain(Stringargs[]){inti,sum=0;for(i=1;i<=100;i++)
sum+=i;//與sum=sum+i等價
System.out.println("sum="+sum);}}程序運行結(jié)果sum=5050在使用循環(huán)語句求和時,注意要先在循環(huán)外,將求和的變量賦初值為0//計算|x|(x<0),x!((0<=x<20),ln(x)(x>=20)的值
importjavax.swing.JOptionPane;publicclassSele3_10{publicstaticvoidmain(Stringargs[]){doublex,y=0;intm;Stringstr;finaldoublePI=3.14159;for(inti=1;i<=3;i++){str=JOptionPane.showInputDialog("請輸入一個浮點數(shù)");x=Double.parseDouble(str);System.out.println("x="+x);
m=(x<0)?1:((x<20)?2:3);switch(m){case1:y=Math.abs(x);break;case2:y=1;for(intj=1;j<=x;j++)y*=j;break;case3:y=Math.log(x);break;}System.out.println("y="+y);}System.exit(0);}}計算結(jié)果如下x=-6.0y=6.0x=15.0y=1.307674368E12x=54.0y=3.9889840465642745while和do…while語句的區(qū)別:初始條件成立時,結(jié)果一致;初始條件不成立時,結(jié)果不一致三種循環(huán)應(yīng)用情況:最佳(思維、喜歡、接受、愛好)三種循環(huán)的關(guān)系:可以相互替代總結(jié)返回longresult=1;longresult=1;while(n>0)do{
{result*=n--;result*=n--;}while(n>0);}循環(huán)嵌套是指在循環(huán)體中包含有循環(huán)語句的情況。三種循環(huán)語句即可以自身進行嵌套,也可以相互進行嵌套構(gòu)成多重循環(huán)。多重循環(huán)自內(nèi)向外展開,即先執(zhí)行內(nèi)循環(huán),后執(zhí)行外循環(huán)。多重循環(huán)不允許相互交叉。//分別輸出1!、2!、3!、...6!以及它們的和publicclassFactorial3_11{publicstaticvoidmain(Stringargs[]){longsum=0;for(inti=1;i<=6;i++){longm=1;for(intj=1;j<=i;j++)m*=j;System.out.println(i+"!="+m);sum+=m;}System.out.println("1!+2!+3!+...+6!="+sum);}}計算結(jié)果1!=12!=23!=64!=245!=1206!=7201!+2!+3!+4!+5!+6!=873//使用級數(shù)求近似值
publicclassSeries3_12{publicstaticvoidmain(Stringargs[]){doublei,m,n,x,y,m1;for(i=0.2;i<1;i+=0.2){m1=Math.exp(i);m=1;n=1;x=1;y=1;
do{x*=i;y*=n;n++;m+=x/y;}while(x/y>0.000001);System.out.println("i="+i+""+"結(jié)果m1="+m1);System.out.println("i="+i+""+"結(jié)果m="+m);}}}
ex=1+x/1!+x2/2!+…+xn/n!
其中X=0.2、0.4、…1.0計算精度為0.000001
跳轉(zhuǎn)語句即強行改變程序執(zhí)行順序的語句,其中break語句在switch語句中已得到應(yīng)用。只使用break只能退出內(nèi)循環(huán);要想達到從內(nèi)循環(huán)體中直接跳轉(zhuǎn)出外循環(huán)的目的,必需與label標號語句連用
。//計算1+2+3+...直到所加和大于1000為止publicclassSum3_13{publicstaticvoidmain(Stringargs[]){inti,m=0;for(i=1;;i++)//{m+=i;if(m>1000)break;}System.out.println("i="+i+"結(jié)果="+m);}}程序運行結(jié)果i=45結(jié)果=1035//證明自然數(shù)3--10000之間的數(shù)是否符合角谷猜想//角谷猜想:任何正整數(shù)n,如果是偶數(shù)則除以2(n/2);如果是奇數(shù),則乘3加1//(3*n+1)得到一個新數(shù),繼續(xù)這樣處理,最后的數(shù)一定是1publicclassQuess3_14{publicstaticvoidmain(Stringargs[]){doublei,n;search:/*語句標號*/for(i=3;i<=10000;i++){n=i;do{if(n%2==0)n/=2;elsen=n*3+1;if(n<1){System.out.println("i="+i);System.out.println("thisguessisfail");breaksearch;//退出for循環(huán)體
}}while(n==1);}System.out.println("數(shù)3到10000之間的數(shù)符合角谷猜想");}}運行結(jié)果數(shù)3到10000之間的數(shù)符合角谷猜想//求解2--100之間的素數(shù)(素數(shù)是指除了能被1和自身整除外,//不能被其他數(shù)所整除的數(shù)publicclassSamp3_15{publicstaticvoidmain(Stringargs[]){inti,j,half,n;for(i=2;i<100;i++){n=i;half=n/2;for(j=2;j<=half;j++)if(n%j==0)break;if(j>half)System.out.println("素數(shù)="+i);}}}在循環(huán)體中,如果自然數(shù)n能夠被指定范圍的數(shù)整除,那么這個數(shù)就不是素數(shù),使用break語句從循環(huán)體退出,再試下一個Break語句在程序還沒有執(zhí)行完循環(huán)時,強行退出循環(huán),執(zhí)行循環(huán)體后面的語句。而continue語句只結(jié)束本次循環(huán),即本次循環(huán)不再執(zhí)行continue語句后面的語句,繼續(xù)執(zhí)行下一次循環(huán)語句或循環(huán)判定。//輸出1--5除了3以外的數(shù)publicclassNumber3_16{publicstaticvoidmain(Stringargs[]){for(inti=1;i<=5;i++){if(i==3)continue;elseSystem.out.println("i="+i);}}}計算結(jié)果如下i=1i=2i=4i=5//求當0<n<20時n!大于100而小于2000的n值publicclassQuery3_17{publicstaticvoidmain(Stringargs[]){intn=1,m=1;for(n=1;n<20;n++){m*=n;if(m<=100)continue;elseif(m>2000)break;System.out.println(n);}}}如果結(jié)果值在100—2000之間,就輸出n的值;結(jié)果值小于100,就使用continue語句,繼續(xù)循環(huán)讀取下一個n值,結(jié)果值大于2000,使用break語句直接退出循環(huán)由于是從循環(huán)語句中間跳出,尚未進入條件判斷語句,n++也沒有執(zhí)行,因此最后輸出時不必做n-1運算練習與習題1、填空題a)所有程序都可以用三種類型的控制結(jié)構(gòu)編寫:___、___和___。b)___結(jié)構(gòu)當條件為真時執(zhí)行一個動作,而當條件為假時執(zhí)行另一個動作。c)對一系列指令執(zhí)行指定的次數(shù)稱為___循環(huán)。d)當不知道一系列語句要重復執(zhí)行多少次時,可以用一個___值終止循環(huán)。2、寫出4種不同的Java語句,實現(xiàn)對整數(shù)變量x加1。3、判斷下面的說法是否正確。如果錯誤,請說明原因。a)default選項在switch選擇結(jié)構(gòu)中是必需的。b)在switch選擇結(jié)構(gòu)中,最后一個選項中break是必需的。c)如果x>y為真或者a<b為真,則表達式(x>y&&a<b)為真。d)包含(||)運算符的表達式,如兩個操作數(shù)中任意一個為真,則該表達式為真。4、編寫Java語句,實現(xiàn)下面各任務(wù):a)用for結(jié)構(gòu)求1到99之間的奇數(shù)之和,假定已經(jīng)聲明了整數(shù)變量sum和count。b)用pow方法計算浮點數(shù)2.5的3次冪。c)用while循環(huán)和計數(shù)器變量i打印1到20之間的整數(shù),假定已聲明了變量i,但未初始化,要求每行只打印5個整數(shù)。提示:使用求模計算i%5。如果表達式值為0,打印一個換行符;否則,打印一個制表符。假定程序是個應(yīng)用程序,用方法System.out.println()輸出換行符,用方法System.out.print(“\t”)輸出制表符。d)用for結(jié)構(gòu)重新實現(xiàn)上題。5、編寫應(yīng)用程序,找出幾個整數(shù)中的最小值。假定讀入的第一個數(shù)值表示用戶要輸入的數(shù)值個數(shù)。publicclassExa3_6{publicstaticvoidmain(Stringargs[]){inta=100;intb,c,d,e;while(a<1000){b=a/100;c=(a-b*100)/10;d=a%100-c*10;e=b*b*b+c*c*c+d*d*d;if(a==e)System.out.println("a="+a+"b="+b+"c="+c+"d="+d);a++;}}}水仙花數(shù)是指其個位、十位和百位三個數(shù)的立方和等于這個三位數(shù)本身,求出所有的水仙花數(shù)。雞翁一,值錢五;雞母一,值錢三,雞雛三,值錢一,百錢買百雞,問雞翁、母、雛各幾何?publicclassCock{publicstaticvoidmain(Stringargs[]){intx,y,z;for(x=0;x<20;++x)for(z=0;z<=100;z+=3){y=100-x-z;if((y>=0)&&(5*x+3*y+z/3==100))System.out.println("Cock="+x+",hen="+y+",chichen="+z);}}
}投資分析程序設(shè)計1、假定年存款利率d保持不變,本金為一固定值時,采取復利方式,經(jīng)過n年,存款總額是多少?2、假定年存款利率d保持不變,本金為一固定值時,采取復利方式,達到預期的存款總額,需要多少年?3、假定年存款利率d保持不變,采取復利方式,希望經(jīng)過n年存款總額達到預期值,應(yīng)投入本金是多少?4、本金為一固定值時,采取復利方式,經(jīng)過n年,到預期的存款總額年存款利率應(yīng)是多少?設(shè)d為年利率,x為本金,n為存款年限,z為存款總額預期值,采取利滾利方式,計算公式如下:
z=x(1+d)nx=z/(1+d)nn=(log(z)-log(x))/log(1+d)
d=(z/x)1/n-1importjavax.swing.JOptionPane;publicclassTzfx3_1{publicstaticvoidmain(Stringargs[]){doublex,y,z,d,n;inti;Stringstr;System.out.println("本程序的功能是,輸入本金數(shù)、年利率");System.out.println("和存入年限,輸出預期達到存款總額");str=JOptionPane.showInputDialog("請輸入本金數(shù)");x=Double.parseDouble(str);str=JOptionPane.showInputDialog("請輸入年利率%");d=Double.parseDouble(str);d=d/100.00;str=JOptionPane.showInputDialog("請輸入存入年限");n=Double.parseDouble(str);z=Math.pow(1+d,n)*x;y=(z-x)*100.00;i=(int)y;y=i/100.00;System.out.println("預期存款總額為z="+z);System.out.println("本金x="+x+"利息y="+y);System.exit(0);}}importjavax.swing.JOptionPane;publicclassTzfx3_2{publicstaticvoidmain(Stringargs[]){doublex,z,d,y;intn;Stringstr;System.out.println("本程序的功能是,輸入本金數(shù)、年利率");System.out.println("和預期達到存款總額,輸出存入年限");str=JOptionPane.showInputDialog("請輸入本金數(shù)");x=Double.parseDouble(str);str=JOptionPane.showInputDialog("請輸入年利率%");d=Double.parseDouble(str);d=d/100.00;str=JOptionPane.showInputDialog("請輸入預期存款總額");z=Double.parseDouble(str);y=(Math.log(z)-Math.log(x))/Math.log(1+d);n=(int)(y+1);System.out.println("預期存入年限為n="+n);System.exit(0);}}importjavax.swing.JOptionPane;publicclassTzfx3_3{publicstaticvoidmain(Stringargs[]){doublex,z,d,n;inty;Stringstr;System.out.println("本程序的功能是,輸入預期達到存款總額");System.out.println("輸入年利率和預期存入年限,給出應(yīng)存入本金數(shù)");str=JOptionPane.showInputDialog("請輸入預期達到存款總額");z=Double.parseDouble(str);str=JOptionPane.showInputDialog("請輸入年利率%");d=Double.parseDouble(str);d=d/100.00;str=JOptionPane.showInputDialog("請輸入預期存入年限");n=Double.parseDouble(str);x=z/Math.pow(1+d,n);y=(int)(x+0.005)*100;x=y/100.00;System.out.println("應(yīng)存入本金數(shù)為x="+x);System.exit(0);}}
類由數(shù)據(jù)成員和方法組成。方法定義類對象的行為或可執(zhí)行的操作,也可以作為類對象與外界交換信息的界面。方法與其他算法語言的函數(shù)、子程序相似,是獨立的程序模塊。一個類可以有多個方法,通過方法完成特定的功能。方法一旦定義,就可以在不同的程序段中多次調(diào)用。方法依附于數(shù)據(jù),方法是類的基本成分,方法必須在類內(nèi)定義,方法必須先定義后使用。使用非本程序段已經(jīng)定義過的方法要通過類的引用實現(xiàn)。使用方法可以增強程序的結(jié)構(gòu)清晰度,提高編程效率。方法聲明[修飾符]返回值類型方法名([參數(shù)表]){聲明部分語句部分}publicstaticintSquare1(intx){ints;s=x*x;return(s);}1、方法聲明包括方法頭和方法體兩部分?;ɡㄌ栔械牟糠譃榉椒w2、修飾符可選public、private、protected任一種3、返回值類型反映方法完成所定義的功能之后返回結(jié)果的類型4、方法名必須符合標識符定義規(guī)則5、參數(shù)表用于指定調(diào)用該方法時,應(yīng)該傳遞的參數(shù)個數(shù)及類型6、有返回值的方法其方法體中必須含有return(表達式)語句7、不能在方法中再聲明其他方法說明方法調(diào)用
方法的調(diào)用有方法表達式和方法語句兩種形式。都以方法名([實參表])的形式出現(xiàn),只是在程序中的位置不同,前者作為表達式的成分,后者作為獨立語句。實參表要與方法定義時的形參個數(shù)、類型、順序保持一致;實參可以是常量、變量或表達式,相鄰的兩個實參之間用逗號隔開。方法調(diào)用執(zhí)行的過程,首先將實參傳遞給形參,然后執(zhí)行方法體。當方法運行結(jié)束后,從調(diào)用該方法的語句的下一句處繼續(xù)執(zhí)行。//定義計算平方值的方法
publicclassFangfa4_2{publicstaticint
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第一章第一節(jié)區(qū)域和區(qū)域差異教案
- 《馬路上的紅綠燈》教案設(shè)計
- 《液壓與氣動》教案
- 商品房銷售客戶體驗優(yōu)化
- 交通事故調(diào)解程序
- 岱岳區(qū)園藝作業(yè)外傷防護指南
- 福建林地生態(tài)旅游開發(fā)新機遇
- 旅游景點供電合同細則
- 住宅裝修項目招投標歸檔
- 區(qū)塊鏈技術(shù)法律顧問服務(wù)協(xié)議
- 收銀主管的述職報告
- 神經(jīng)外科學:顱內(nèi)腫瘤
- 高一年級政治上學期期中試題(人教含答案)
- 結(jié)構(gòu)性心臟病介入治療及并發(fā)癥的臨床處理精編ppt
- 六年級上冊心理健康教育課件-戰(zhàn)勝挫折走向成功 全國通用(共19張PPT)
- 小學語文人教三年級上冊(統(tǒng)編)第五單元-搭船的鳥學歷案
- 蘇教版三年級數(shù)學上冊《認識千克》教案(南通公開課)
- 隨州市炎帝神農(nóng)故里風景區(qū)修建性詳細規(guī)劃
- 日、韓企業(yè)人力資源管理特點及啟示
- 珍愛生命和法同行
- 一例消化道出血合并高血壓糖尿病患者的護理查房課件
評論
0/150
提交評論