版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章java電子教案本章主要介紹編寫Java程序必須了解的若干語言基礎(chǔ)知識,包括Java程序的結(jié)構(gòu)、數(shù)據(jù)類型、變量、常量、表達(dá)式和流程控制語句等。掌握這些基礎(chǔ)知識,是書寫正確的Java程序的前提條件。3.1Java程序的構(gòu)成
上一章中已經(jīng)介紹了幾個簡單的Java程序的例子,通過它們可以了解Java程序的一般構(gòu)成規(guī)則,下面仍以例2-5中的程序?yàn)槔榻BJava程序的構(gòu)成。AppletInOut.java 1:importjava.applet.*; 2:importjava.awt.*; 3:importjava.awt.event.*; 4:publicclassAppletInOutextendsApplet implementsActionListener主類類頭 5:{父類 6:Labelprompt; 7:TextFieldinput,output;靜態(tài)屬性 8: 9:publicvoidinit() 10:{ 11:prompt=newLabel(″請輸入您的名 字:″); 12:input=newTextField(6); 13:output=newTextField(20); 14:add(prompt); 15:add(input); 16:add(output); 17:input.addActionListener(this);方法1 18:} 19:publicvoidactionPerformed(ActionEvente) 20:{ 21:output.setText(input.getText()+″, 歡迎你!″); 22:}方法2 23:}主類類體Java源程序是由類定義組成的,每個程序中可以定義若干個類,但是只有一個類是主類。在JavaApplication中,這個主類是指包含main方法的類;在JavaApplet里,這個主類是一個系統(tǒng)類Applet的子類。主類是Java程序執(zhí)行的入口點(diǎn)。同一個Java程序中定義的若干類之間沒有嚴(yán)格的邏輯關(guān)系要求,但它們通常是在一起協(xié)同工作的,每一個類都可能需要使用其他類中定義的靜態(tài)屬性或方法。Java程序中定義類使用關(guān)鍵字class,每個類的定義由類頭定義和類體定義兩部分組成。類體部分用來定義靜態(tài)屬性和方法這兩種類的成員,其中方法類似于其他高級語言中的函數(shù),而靜態(tài)屬性則類似于變量。類頭部分除了聲明類名之外,還可以說明類的繼承特性,當(dāng)一個類被定義為是另一個已經(jīng)存在的類(稱為這個類的父類)的子類時,它就可以從其父類中繼承一些已定義好的類成員而不必自己重復(fù)編碼。語句是構(gòu)成Java程序的基本單位之一。每一條Java語句都由分號(;)結(jié)束,其構(gòu)成應(yīng)該符合Java的語法規(guī)則。類和方法中的所有語句應(yīng)該用一對大括號括起。Java程序是由類定義組成的,每個類內(nèi)部包括類的靜態(tài)屬性聲明和類的方法兩部分,所以除了靜態(tài)屬性聲明語句之外,其他的執(zhí)行具體操作的語句只能存在于類方法的大括號之中,而不能跳出方法孤立地直接書寫在類中。例如,例2-5中第11~17句、第21句,這些語句都不能寫在方法的外面。比語句更小的語言單位是表達(dá)式、變量、常量和關(guān)鍵字等,Java的語句就是由它們構(gòu)成的。其中變量與常量關(guān)鍵字是Java語言語法規(guī)定的保留字,用戶程序定義的常量和變量的取名不能與保留字相同。3.2數(shù)據(jù)類型、變量與常量
3.2.1數(shù)據(jù)類型表列出了Java中定義的所有數(shù)據(jù)類型,可以看出Java的數(shù)據(jù)類型的設(shè)置與C語言相近。其不同之處在于:首先,Java的各種數(shù)據(jù)類型占用固定的內(nèi)存長度,與具體的軟硬件平臺環(huán)境無關(guān);其次,Java的每種數(shù)據(jù)類型都對應(yīng)一個缺省的數(shù)值,使得這種數(shù)據(jù)類型的變量的取值總是確定的。這兩點(diǎn)分別體現(xiàn)了Java的跨平臺特性和安全穩(wěn)定性。表3.1Java的基本數(shù)據(jù)類型數(shù)據(jù)類型關(guān)鍵字占用位數(shù)缺省數(shù)值取值范圍布爾型boolean8falsetrue,false字節(jié)型byte80-128~127字符型char16′\u0000′′\u0000′~′\uFFFF′短整型short160-32768~32767整型int320-2147483648~2147483647長整型long640-9223372036854775808~9223372036854775807浮點(diǎn)型float320.0F1.40129846432481707e-45~3.40282346638528860e+38雙精度型double640.0D4.94065645841246544e-324~1.79769313486231570e+308dboolean是用來表示布爾型數(shù)據(jù)的數(shù)據(jù)類型。boolean型的變量或常量的取值只有true和false兩個。其中,true代表“真”,false代表“假”。
byte是用來處理未經(jīng)加工的二進(jìn)制數(shù)據(jù)的數(shù)據(jù)類型,每個byte型的常量或變量中包含8位(bit)的二進(jìn)制信息。
Java的字符數(shù)據(jù)類型char與其他語言相比有較大的改進(jìn)。C語言等的字符類型是采用ASCII編碼,每個數(shù)據(jù)占用8比特的長度,總共可以表示256個不同的字符。ASCII編碼是國際標(biāo)準(zhǔn)的編碼方式,但是也有其一定的局限性,最典型的體現(xiàn)在處理以漢字為代表的東方文字方面。漢字的字符集大,僅用8位編碼是不夠的,所以傳統(tǒng)的處理方法是用兩個8位的字符數(shù)據(jù)來表示一個漢字。為了簡化問題,Java的字符類型采用了一種新的國際標(biāo)準(zhǔn)編碼方案——Unicode編碼。每個Unicode碼占用16個比特位,包含的信息量比ASCII碼多了一倍,無論東方字符還是西方字符,都可以統(tǒng)一用一個字符表達(dá)。由于采用Unicode編碼方案,為Java程序在基于不同語言的平臺間實(shí)現(xiàn)平滑移植鋪平了道路。上面所介紹的數(shù)據(jù)類型都是基本數(shù)據(jù)類型,Java中還存在著一種引用數(shù)據(jù)類型(reference),包括類和接口等。比如,對應(yīng)基本的double類型,還存在著一個類Double。這些類在包含基本數(shù)據(jù)類型所表示的一定范圍、一定格式的數(shù)值的同時,還包含了一些特定的方法,可以實(shí)現(xiàn)對數(shù)值的專門操作,如把字符串轉(zhuǎn)換成雙精度型數(shù)值等。嚴(yán)格的面向?qū)ο笳Z言中不應(yīng)該有基本數(shù)據(jù)類型存在;但事實(shí)上這些簡單數(shù)據(jù)類型應(yīng)用得太廣太多了,為了簡化編程,Java中就定義了與面向過程語言相似的與類無關(guān)的基本數(shù)據(jù)類型。從這個意義上來說,Java仍繼承了面向過程的一些東西,并不是嚴(yán)格意義上的完全面向?qū)ο蟮恼Z言。3.2.2標(biāo)識符任何一個變量、常量、方法、對象和類都需要有一個名字標(biāo)志它的存在,這個名字就是標(biāo)識符。標(biāo)識符可以由編程者自由指定,但是需要遵循一定的語法規(guī)定。Java對于標(biāo)識符的定義有如下的規(guī)定:(1)標(biāo)識符可以由字母、數(shù)字和兩個特殊字符下劃線(-)、美元符號($)組合而成。(2)標(biāo)識符必須以字母、下劃線或美元符號開頭。(3)Java是大小寫敏感的語言,class和Class,System和system分別代表不同的標(biāo)識符,在定義和使用時要特別注意這一點(diǎn)。(4)應(yīng)該使標(biāo)識符能一定程度上反映它所表示的變量、常量、對象或類的意義。表列出了一些合法、不合法的標(biāo)識符,讀者可以自己分析一下不合法的標(biāo)識符錯在何處。表3.2合法與不合法的標(biāo)識符的例子合法標(biāo)識符不合法標(biāo)識符FirstJavaApplet1FirstJavaApplicationMySalary12Tree&Glasses-isTrue-isTrue-$theLastOneJavaBuilderHelloWorld273.153.2.3常量常量一經(jīng)建立,在程序運(yùn)行的整個過程中都不會改變。Java中常用的常量有布爾常量、整型常量、字符常量、字符串常量和浮點(diǎn)常量。1.布爾常量布爾常量包括true和false,分別代表真和假。2.整型常量整型常量可以用來給整型變量賦值,整型常量可以采用十進(jìn)制、八進(jìn)制和十六進(jìn)制表示。十進(jìn)制的整型常量用非0開頭的數(shù)值表示,如100,-50;八進(jìn)制的整型常量用以0開頭的數(shù)字表示,如017代表十進(jìn)制的數(shù)字15;十六進(jìn)制的整型常量用0x開頭的數(shù)值表示,如0x2F代表十進(jìn)制的數(shù)字47。整型常量按照所占用的內(nèi)存長度,又可分為一般整型常量和長整型常量,其中一般整型常量占用32位,長整型常量占用64位。長整型常量的尾部有一個大寫的L或小寫的l,如-386L,017777l。3.浮點(diǎn)常量浮點(diǎn)常量表示的是可以含有小數(shù)部分的數(shù)值常量。根據(jù)占用內(nèi)存長度的不同,可以分為一般浮點(diǎn)常量和雙精度浮點(diǎn)常量兩種。一般浮點(diǎn)常量占用32位內(nèi)存,用F、f表示,如,,;雙精度浮點(diǎn)常量占用64位內(nèi)存,用帶D或d或不加后綴的數(shù)值表示,如,,。與其他高級語言類似,浮點(diǎn)常量還有一般表示法和指數(shù)表示法兩種不同的表示方法。4.字符常量字符常量用一對單引號括起的單個字符表示,這個字符可以直接是Latin字母表中的字符,如′a′,′Z′,′8′,′#′;也可以是轉(zhuǎn)義符,還可以是要表示的字符所對應(yīng)的八進(jìn)制數(shù)或Unicode碼。轉(zhuǎn)義符是一些有特殊含義、很難用一般方式表達(dá)的字符,如回車、換行等。為了表達(dá)清楚這些特殊字符,Java中引入了一些特別的定義。所有的轉(zhuǎn)義符都用反斜線(\)開頭,后面跟著一個字符來表示某個特定的轉(zhuǎn)義符,詳見表。表3.3轉(zhuǎn)義符引用方法對應(yīng)Unicode碼意義′\b′′\u0008′退格′\t′′\u0009′水平制表符tab′\n′′\u000a′換行′\f′′\u000c′表格符′\r′′\u000d′回車′\″′′\u0022′雙引號′\′′′\u0027′單引號′\\′′\u005c′反斜線表中間一列表示的是一個字符的Unicode碼,還可以用八進(jìn)制表示一個字符常量。如′\101′就是用八進(jìn)制表示一個字符常量,它與′\u0047′和′A′表示的是同一個字符,作為常量它們是相同的。需要補(bǔ)充說明的是,八進(jìn)制表示法只能表示′\000′~′\377′范圍內(nèi)的字符,即不能表示全部的Unicode字符,而只能表示其中ASCII字符集的部分。5.字符串常量字符串常量是用雙引號括起的一串若干個字符(可以是0個)。字符串中可以包括轉(zhuǎn)義符,標(biāo)志字符串開始和結(jié)束的雙引號必須在源代碼的同一行上。下面是幾個字符串常量的例子:″Hello″,″My\nJava″,″Howareyou?1234″,″″。在Java中可以使用連接操作符(+)把兩個或更多的字符串常量串接在一起,組成一個更長的字符串。例如,″Howdoyoudo?″+″\n″的結(jié)果是″Howdoyoudo?\n″。3.2.4變量變量是在程序的運(yùn)行過程中數(shù)值可變的數(shù)據(jù),通常用來記錄運(yùn)算中間結(jié)果或保存數(shù)據(jù)。Java中的變量必須先聲明后使用,聲明變量包括指明變量的數(shù)據(jù)類型和變量的名稱,必要時還可以指定變量的初始數(shù)值。如下面的語句: booleanm-bFlag=true;聲明了一個布爾類型的簡單變量,名字為m-bFlag,該變量的初值是邏輯真。由于聲明變量的語句也是Java程序中的一個完整的語句,所以它與其他Java語句一樣需要用分號結(jié)束。下面是其他幾個變量聲明的例子: charmyCharacter=′B′; longMyLong=-375; intm-iCount=65536; doublem-dScroe;聲明變量又稱為創(chuàng)建變量,執(zhí)行變量聲明語句時系統(tǒng)根據(jù)變量的數(shù)據(jù)類型在內(nèi)存中開辟相應(yīng)的空間并登記變量名稱、初始值等信息。Java的變量有一定的生存期和有效范圍,與C語言一樣,Java用大括號將若干語句組成語句塊,變量的有效范圍就是聲明它的語句所在的語句塊,一旦程序的執(zhí)行離開了這個語句塊,變量就沒有意義,不能再使用了。例 1:publicclassUseVariable 2:{ 3:publicstaticvoidmain(Stringargs[]) 4:{ 5:booleanb=true; 6:shortsi=128; 7:inti=-99; 8:longl=123456789L; 9:charch=′J′; 10:floatf=3.1415925F; 11:doubled=-1.04E-5; 12:Strings=″你好!″; 13:System.out.println(″布爾型變量b= ″+b); 14:System.out.println(″短整型變量si= ″+si); 15:System.out.println(″整型變量i=″ +i); 16:System.out.println(″長整型變量l= ″+l); 17:System.out.println(″字符型變量ch= ″+ch); 18:System.out.println(″浮點(diǎn)型變量f= ″+f); 19:System.out.println(″雙精度型變量d= ″+d); 20:System.out.println(″字符型對象s= ″+s); 21:} 22:}圖是例3-1的運(yùn)行結(jié)果。圖3.1例3-1的運(yùn)行結(jié)果例3-1是一個字符界面的JavaApplication程序,其中定義了若干個變量并用相應(yīng)類型的常量為它們賦初始值。其中第10句中特別使用了浮點(diǎn)常量(有興趣的讀者可以去掉常量后面的字符′F′,再嘗試編譯看能得到什么結(jié)果)。第11句中的雙精度常量使用科學(xué)計數(shù)法表示。第12句定義了一個字符串對象,String不是基本數(shù)據(jù)類型,而是一個系統(tǒng)定義的類名,每一個字符串變量實(shí)際上都是一個字符串對象。但是由于字符串是十分常用的對象,它的聲明和創(chuàng)建可以簡化成第12句那樣的形式。第13句到第20句使用System.out.println()這個系統(tǒng)已經(jīng)定義好的方法來輸出前面所定義的所有變量的數(shù)值。每個語句首先利用一個字符串常量作為解釋性信息,然后把各種數(shù)據(jù)類型的數(shù)據(jù)轉(zhuǎn)化成字符串的形式,用“+”拼接在前面的字符串常量的后面,共同輸出。輸出完畢后這個方法將把光標(biāo)換到下一行,準(zhǔn)備下一次輸出。例3-2getNumber.java 1:importjava.io.*; 2: 3:publicclassgetNumber 4:{ 5:publicstaticvoidmain(Stringargs[]) 6:{ 7:inti=0; 8:Strings; 9: 10:try{ 11:System.out.print(″請輸入一個整 型數(shù):″); 12:BufferedReaderbr= 13:newBufferedReader(new InputStreamReader(System.in)); 14:s=br.readLine(); 15:i=Integer.parseInt(s); 16:}catch(IOExceptione){} 17:System.out.print(″你輸入了數(shù)字:″ +i); 18:System.out.println(″\t,對嗎?″); 19:} 20:}圖是例3-2的運(yùn)行結(jié)果。圖3.2例3-2的運(yùn)行結(jié)果例3-2接受用戶從鍵盤輸入的一個字符串,然后把它轉(zhuǎn)化成整型數(shù)據(jù)并輸出。如在圖中用戶輸入了字符串“245”,利用例3-2第15句中系統(tǒng)定義的方法Integer.parseInt()就可以把它轉(zhuǎn)化成數(shù)字245。其中Integer是系統(tǒng)定義的一個類,對應(yīng)基本數(shù)據(jù)類型int,parseInt()是Integer類的一個方法,可以把數(shù)字字符組成的字符串轉(zhuǎn)化成真正的整型數(shù)字。另外,第11句和第17句還使用了一個新的輸出方法System.out.print()。這個方法的用法和作用與System.out.println()基本相同,唯一的區(qū)別是輸出了數(shù)據(jù)后并不回車。第18句使用轉(zhuǎn)義符′\t′將輸出數(shù)據(jù)與字符串常量拉開距離。例 1:importjava.applet.*; 2:importjava.awt.*; 3:importjava.awt.event.*; 4: 5:publicclassgetDoubleextendsApplet implementsActionListener 6:{ 7:Labelprompt; 8:TextFieldinput; 9:doubled=0.0; 10: 11:publicvoidinit() 12:{ 13:prompt=newLabel(″請輸入一個浮 點(diǎn)數(shù):″); 14:input=newTextField(10); 15:add(prompt); 16:add(input); 17:input.addActionListener(this); 18:} 19:publicvoidpaint(Graphicsg) 20:{ 21:g.drawString(″你輸入了數(shù)據(jù):″+ d,10,50); 22:} 23:publicvoidactionPerformed(ActionEvent e) 24:{ 25:d=Double.valueOf(input.getText()).doubleValue(); 26:repaint(); 27:} 28:}圖是例3-3的運(yùn)行結(jié)果。圖3.3例3-3的運(yùn)行結(jié)果例3-3是一個圖形界面下的JavaApplet程序,通過這個例子可以了解如何在圖形界面下輸入數(shù)值數(shù)據(jù)。用戶在文本框?qū)ο骾nput中輸入字符串并回車后,程序接受用戶輸入的這個字符串(在圖中是“3.1415926”),利用第25句中的方法Double.valueOf().doubleValue()將這個字符串轉(zhuǎn)化成真正的浮點(diǎn)數(shù)據(jù)賦值給雙精度變量d(在圖中是)。第26句調(diào)用Applet類中系統(tǒng)定義好的方法repaint(),這個方法將調(diào)用第19句到22句的方法paint(),把變量d中的數(shù)據(jù)顯示出來。為體會圖形界面輸入數(shù)據(jù)的方法,讀者可以針對例3-3做如下實(shí)驗(yàn):(1)刪除第15句,編譯并運(yùn)行,觀察界面的變化。(2)恢復(fù)第15句,刪除第16句,編譯并運(yùn)行,觀察界面的變化。(3)恢復(fù)第16句,刪除第17句,編譯并運(yùn)行,觀察界面的變化。(4)恢復(fù)第17句,刪除第26句,編譯并運(yùn)行,觀察界面的變化。3.3表達(dá)式表達(dá)式是由變量、常量、對象、方法調(diào)用和操作符組成的式子。符合語法規(guī)則的表達(dá)式可以被編譯系統(tǒng)理解、執(zhí)行或計算,表達(dá)式的值就是對它運(yùn)算后所得的結(jié)果。組成表達(dá)式的Java操作符有很多種,代表了多種的豐富的操作運(yùn)算,包括賦值運(yùn)算、算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算等。3.3.1賦值與強(qiáng)制類型轉(zhuǎn)換
賦值運(yùn)算符對應(yīng)了賦值運(yùn)算,即賦予程序里的變量或?qū)ο笠欢ǖ膬?nèi)容。簡單的賦值運(yùn)算是把一個表達(dá)式的值直接賦給一個變量或?qū)ο?,使用的賦值運(yùn)算符是“=”,其格式如下: 變量或?qū)ο?表達(dá)式;其中賦值號右邊的表達(dá)式可以是常量、另一個變量或?qū)ο笠约胺椒ǖ姆祷刂?。下面是一些簡單賦值運(yùn)算的例子: i=0; j=i; k=i+j*5; MyFirstString=MyDouble.toString(); MySecondString=MyFirstString;需要注意的是,當(dāng)賦值號的左邊是一個對象名時,賦值運(yùn)算符將把右邊表達(dá)式所得的對象的引用賦值給它,而不是為這個對象開辟新的內(nèi)存空間并把右邊對象的所有內(nèi)容賦值給它。在使用賦值運(yùn)算時,可能會遇到等號左邊的數(shù)據(jù)類型和等號右邊的數(shù)據(jù)類型不一致的情況,這時需要把等號右邊的數(shù)據(jù)類型轉(zhuǎn)化成等號左邊的數(shù)據(jù)類型。某些情況下,系統(tǒng)可以自動完成這種類型轉(zhuǎn)換,另一些情況下就要用到強(qiáng)制類型轉(zhuǎn)換。Java的類型轉(zhuǎn)換有較嚴(yán)格的規(guī)定:凡是將變量從占用內(nèi)存較少的短數(shù)據(jù)類型轉(zhuǎn)化成占用內(nèi)存較多的長數(shù)據(jù)類型時,可以不做顯式的類型轉(zhuǎn)換聲明;而將變量從較長的數(shù)據(jù)類型轉(zhuǎn)換成較短的數(shù)據(jù)類型時,則必須做強(qiáng)制類型轉(zhuǎn)換。例如下面的例子中分別定義了16位的字節(jié)類型變量MyByte和32位的整數(shù)類型變量MyInteger: byteMyByte=10; intMyInteger=-1;如果把MyByte的值賦給MyInteger,則可以直接寫成: MyInteger=MyByte;而把MyInteger的值賦給MyByte,則必須寫成MyByte=(byte)MyInteger;先把變量MyInteger中保存的數(shù)值的數(shù)據(jù)類型從int變成byte后才能賦給MyByte,其中,(byte)就是在做強(qiáng)制類型轉(zhuǎn)換。其一般格式是: (數(shù)據(jù)類型)變量名或表達(dá)式3.3.2算術(shù)運(yùn)算算術(shù)運(yùn)算是針對數(shù)值類型操作數(shù)進(jìn)行的運(yùn)算,算術(shù)運(yùn)算符根據(jù)需要的操作數(shù)個數(shù)的不同,可以分為雙目運(yùn)算符和單目運(yùn)算符兩種。1.雙目運(yùn)算符
表3.4雙目算術(shù)運(yùn)算符運(yùn)算符運(yùn)算例功能+加a+b求a與b相加的和-減a-b求a與b相減的差*乘a*b求a與b相乘的積/除a/b求a除以b的商%取余a%b求a除以b所得的余數(shù)這里有兩個需要注意的問題:(1)只有整數(shù)類型(int,long,short)的數(shù)據(jù)才能夠進(jìn)行取余運(yùn)算,float和double不能取余。(2)兩個整數(shù)類型的數(shù)據(jù)做除法時,結(jié)果是截取商數(shù)的整數(shù)部分,而小數(shù)部分被截斷。如果希望保留小數(shù)部分,則應(yīng)該對除法運(yùn)算的操作數(shù)做強(qiáng)制類型轉(zhuǎn)換。例如1/2的結(jié)果是0,而((float)1)/2的結(jié)果是。2.單目運(yùn)算符單目運(yùn)算符的操作數(shù)只有一個,算術(shù)運(yùn)算中有三個單目運(yùn)算符。表3.5單目算術(shù)運(yùn)算符運(yùn)算符運(yùn)算例功能等價++自增a++或++aa=a+1--自減a--或--aa=a-1-求相反數(shù)-aa=-a單目運(yùn)算符中的自增和自減,其運(yùn)算符的位置可以在操作數(shù)的前面,也可以在操作數(shù)的后面;當(dāng)進(jìn)行單目運(yùn)算的表達(dá)式位于一個更復(fù)雜的表達(dá)式內(nèi)部時,單目運(yùn)算符的位置將決定單目運(yùn)算與復(fù)雜表達(dá)式二者執(zhí)行的先后順序。如下面的例子里,單目運(yùn)算符在操作數(shù)變量的前面,則先執(zhí)行單目運(yùn)算,修改變量的值后用這個新值參與復(fù)雜表達(dá)式的運(yùn)算。 intx=2; inty=(++x)*3;運(yùn)算執(zhí)行的結(jié)果是x=3,y=9。而在下面的例子里,由于單目運(yùn)算符放在操作數(shù)變量的后面,則先計算復(fù)雜表達(dá)式的值,最后再修改變量的取值。 intx=2; inty=(x++)*3;運(yùn)算執(zhí)行的結(jié)果是x=3,y=6。可見,單目運(yùn)算符的位置不同,雖然對操作數(shù)變量沒有影響,但卻會改變整個表達(dá)式的值。例3-4TestArithmetic.java 1:importjava.applet.*; 2:importjava.awt.*; 3:importjava.awt.event.*; 4: 5:publicclassUseArithmeticextendsApplet implementsActionListener 6:{ 7:Labelprompt; 8:TextFieldinput1,input2; 9:Buttonbtn; 10:inta=0,b=1; 11: 12:publicvoidinit() 13:{ 14:prompt=newLabel(″請輸入兩個整 型數(shù)據(jù):″); 15:input1=newTextField(5); 16:input2=newTextField(5); 17:btn=newButton(″計算″); 18:add(prompt); 19:add(input1); 20:add(input2); 21:add(btn); 22:btn.addActionListener(this); 23:} 24:publicvoidpaint(Graphicsg) 25:{ 26:g.drawString(a+″+″+b+″=″ +(a+b),10,50); 27:g.drawString(a+″-″+b+″=″ +(a-b),10,70); 28:g.drawString(a+″*″+b+″=″ +(a*b),10,90); 29:g.drawString(a+″/″+b+″=″ +(a/b),10,110); 30:g.drawString(a+″%″+b+″= ″+(a%b),10,130); 31:} 32:publicvoidactionPerformed(ActionEvent e) 33:{ 34:a=Integer.parseInt(input1.getText()); 35:b=Integer.parseInt(input2.getText()); 36:repaint(); 37:} 38:}例3-4是圖形界面中的JavaApplet程序,它利用兩個文本框?qū)ο骾nput1和input2接受用戶輸入的兩個數(shù)據(jù)。當(dāng)用戶單擊按鈕“計算”時,程序?qū)堰@兩個字符串轉(zhuǎn)化為整型數(shù)據(jù)賦值給同類的兩個變量a和b,然后通過repaint()方法調(diào)用第24行到第31行的paint()方法,以a和b為操作數(shù),計算它們四則運(yùn)算的結(jié)果并輸出。圖是例3-4運(yùn)行結(jié)果。
圖3.4例3-4的運(yùn)行結(jié)果3.3.3關(guān)系運(yùn)算關(guān)系運(yùn)算是比較兩個數(shù)據(jù)之間的大小關(guān)系的運(yùn)算,常用的關(guān)系運(yùn)算列于表中:表3.6關(guān)系運(yùn)算符運(yùn)算符運(yùn)算==等于!=不等于>大于<小于>=大于等于<=小于等于關(guān)系運(yùn)算的結(jié)果是布爾型的量,即“真”或“假”。例如: intx=5,y=7; booleanb=(x==y);則b的初始值是false。另外,需注意區(qū)分等于號和賦值號,不要混淆。例3-5UseRelation.java 24:publicvoidpaint(Graphicsg) 25:{ 26:g.drawString(a+″>″+b+″=″+ (a>b),10,50); 27:g.drawString(a+″<″+b+″=″+ (a<b),10,70); 28:g.drawString(a+″>=″+b+″=″+ (a>=b),10,90); 29:g.drawString(a+″<=″+b+″=″+ (a<=b),10,110); 30:g.drawString(a+″==″+b+″=″+ (a==b),10,130); 31:g.drawString(a+″!=″+b+″=″+ (a!=b),10,150); 32:}圖是例3-5的運(yùn)行結(jié)果。例3-5在例3-4的基礎(chǔ)上修改了第24句到第31句的paint()方法,比較用戶輸入的兩個整型數(shù)之間的關(guān)系并把比較結(jié)果輸出。圖3.5例3-5的運(yùn)行結(jié)果3.3.4邏輯運(yùn)算邏輯運(yùn)算是針對布爾型數(shù)據(jù)進(jìn)行的運(yùn)算,運(yùn)算的結(jié)果仍然是布爾型量。常用的邏輯運(yùn)算符見表。表3.7邏輯運(yùn)算符運(yùn)算符運(yùn)算例運(yùn)算規(guī)則&非簡潔與x&yx,y都真時結(jié)果才為真|非簡潔或x|yx,y都假時結(jié)果才為假!取反!xx真時為假,x假時為真^異或x^yx,y同真假時結(jié)果為假&&簡潔與x&&yx,y都真時結(jié)果才為真||簡潔或x||yx,y都假時結(jié)果才為假“&”和“|”被稱為非簡潔運(yùn)算符,因?yàn)樵诶盟鼈冏雠c、或運(yùn)算時,運(yùn)算符左右兩邊的表達(dá)式總會被運(yùn)算執(zhí)行,然后再對兩表達(dá)式的結(jié)果進(jìn)行與、或運(yùn)算;而在利用“&&”和“||”做簡潔運(yùn)算時,運(yùn)算符右邊的表達(dá)式有可能被忽略而不加執(zhí)行。例如: intx=3,y=5; booleanb=x>y&&x++==y--;在計算布爾型的變量b的取值時,先計算&&左邊的關(guān)系表達(dá)式x>y,得結(jié)果為假,根據(jù)邏輯與運(yùn)算的規(guī)則,只有參加與運(yùn)算的兩個表達(dá)式都為真時,最后的結(jié)果才為真;所以不論&&右邊的表達(dá)式結(jié)果如何,整個式子的值都為假,右邊的表達(dá)式就不予計算執(zhí)行了;最后三個變量的取值分別是:x為3,y為5,b為false。如果把上題中的簡潔與(&&)換為非簡潔與(&),則與號兩邊的兩個表達(dá)式都會被運(yùn)算,最后三個變量的取值分別是:x為4,y為4,b為false。同理,對于簡潔或(|),若左邊的表達(dá)式的運(yùn)算結(jié)果為真,則整個或運(yùn)算的結(jié)果一定為真,右邊的表達(dá)式就不會再運(yùn)算執(zhí)行了。例3-6UseLogical.java … 10:booleana=true,b=false; … 24:publicvoidpaint(Graphicsg) 25:{ 26:g.drawString(a+″&″+b+″=″+ (a&b),10,50); 27:g.drawString(a+″&&″+b+″=″ +(a&&b),10,70); 28:g.drawString(a+″|″+b+″=″+ (a|b),10,90); 29:g.drawString(a+″||″+b+″=″+ (a||b),10,110); 30:g.drawString(a+″^″+b+″=″+ (a^b),10,130); 31:g.drawString(″!″+b+″=″+ (!b),10,150); 32:} 33:publicvoidactionPerformed(ActionEvente) 34:{ 35:a=Boolean.valueOf(input1.getText()).booleanValue(); 36:b=Boolean.valueOf(input2.getText()).booleanValue(); 37:repaint(); 38:} …圖是例3-6的運(yùn)行結(jié)果。例3-6在例3-4的基礎(chǔ)上修改了第10句,使a,b兩個變量可以接受布爾型數(shù)據(jù);修改了第33到第38句的事件處理方法,利用系統(tǒng)定義的方法Boolean.valueOf().booleanValue()將用戶輸入的字符串轉(zhuǎn)化成布爾型數(shù)據(jù);修改了第24行到第32行的paint()方法,使之顯示兩個布爾型量邏輯運(yùn)算的結(jié)果。圖3.6例3-6的運(yùn)行結(jié)果3.3.5位運(yùn)算運(yùn)算是對操作數(shù)以二進(jìn)制比特位為單位進(jìn)行的操作和運(yùn)算,位運(yùn)算的操作數(shù)和結(jié)果都是整型量。幾種位運(yùn)算符和相應(yīng)的運(yùn)算規(guī)則列于表中。表3.8位運(yùn)算符運(yùn)算符運(yùn)算例運(yùn)算規(guī)則~位反~x將x按比特位取反>>右移x>>ax各比特位右移a位<<左移x<<ax各比特位左移a位>>>不帶符號的右移x>>>ax各比特位右移a位左邊的空位一律填零移位運(yùn)算是將某一變量所包含的各比特位按指定的方向移動指定的位數(shù),表是三個移位運(yùn)算符的例子。表3.9移位運(yùn)算X(十進(jìn)制表示)二進(jìn)制補(bǔ)碼表示x<<2x>>2x>>>23000011110011110000000011100000111-17111011111011110011111011001110113.3.6其他運(yùn)算符
1.三目條件運(yùn)算符?:Java中的三目條件運(yùn)算符與C語言完全相同,使用形式是: x?y:z其規(guī)則是,先計算表達(dá)式x的值,若x為真,則整個三目運(yùn)算的結(jié)果為表達(dá)式y(tǒng)的值;若x為假,則整個運(yùn)算結(jié)果為表達(dá)式z的值。參看下面的例子: intx=5,y=8,z=2; intk=x<3?y:z;//x<3為假,所以k取z的值,結(jié)果為2 inty=x>0?x:-x;//y為x的絕對值2.復(fù)雜賦值運(yùn)算符復(fù)雜賦值運(yùn)算符是在先進(jìn)行某種運(yùn)算之后,再把運(yùn)算的結(jié)果做賦值。表列出了所有的復(fù)雜賦值運(yùn)算。表3.10復(fù)雜賦值運(yùn)算符運(yùn)算符例子等價于+=x+=ax=x+a-=x-=ax=x-a*=x*=ax=x*a/=x/=ax=x/a%=x%=ax=x%a&=x&=ax=x&a|=x|=ax=x|a^=x^=ax=x^a<<=x<<=ax=x<<a>>=x>>=ax=x>>a<<<=x<<<=ax=x<<<a3.括號與方括號括號運(yùn)算符()在某些情況下起到改變表達(dá)式運(yùn)算先后順序的作用;在另一些情況下代表方法或函數(shù)的調(diào)用。它的優(yōu)先級在所有的運(yùn)算符中是最高的。方括號運(yùn)算符[]是數(shù)組運(yùn)算符,它的優(yōu)先級也很高,其具體使用方法將在后面介紹。4.對象運(yùn)算符對象運(yùn)算符instanceof用來測定一個對象是否屬于某一個指定類或其子類的實(shí)例,如果是則返回true,否則返回false。例如: booleanb=MyObjectinstanceofTextField;3.3.7運(yùn)算符的優(yōu)先級與結(jié)合性
運(yùn)算符的優(yōu)先級決定了表達(dá)式中不同運(yùn)算執(zhí)行的先后順序。如關(guān)系運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,x>y&&!z相當(dāng)于(x>y)&&(!z)。運(yùn)算符的結(jié)合性決定了并列的相同運(yùn)算的先后執(zhí)行順序。如對于左結(jié)合的“+”,x+y+z等價于(x+y)+z,對于右結(jié)合的“!”,!!x等價于!(!x)。表列出了Java主要運(yùn)算符的優(yōu)先級和結(jié)合性。表3.11Java運(yùn)算符的優(yōu)先級與結(jié)合性優(yōu)先級描述運(yùn)算符結(jié)合性1最高優(yōu)先級.[]()左/右2單目運(yùn)算-~!++--強(qiáng)制類型轉(zhuǎn)換符右3算術(shù)乘除運(yùn)算*/%左4算術(shù)加減運(yùn)算+-左5移位運(yùn)算>><<>>>左6大小關(guān)系運(yùn)算<<=>>=左7相等關(guān)系運(yùn)算==!=左8按位與,非簡潔與&左9按位異或運(yùn)算^左10按位或,非簡潔或|左11簡潔與&&左12簡潔或||左13三目條件運(yùn)算?:右14簡單、復(fù)雜賦值=運(yùn)算符=右3.3.8注釋
注釋是程序不可少的部分。Java的注釋符有兩種。一種是行注釋符“//”,以“//”開頭到本行末的所有字符被系統(tǒng)理解為注釋,不予編譯。如: //Thisatestprogramofwhatistobedone另一種注釋符是塊注釋符“/*”和“*/”,其中“/*”標(biāo)志著注釋塊的開始,“*/”標(biāo)志著注釋塊的結(jié)束?!?*”和“*/”可以括起若干個注釋行。如: /*程序名: 項(xiàng)目名: 編寫時間: 功能: 輸入/輸出:*/3.4流程控制語句
流程控制語句是用來控制程序中各語句執(zhí)行順序的語句,是程序中非常關(guān)鍵和基本的部分。流程控制語句可以把單個的語句組合成有意義的,能完成一定功能的小邏輯模塊,能否熟練地運(yùn)用流程控制語句往往很大程度上影響所編寫程序的質(zhì)量。最主要的流程控制方式是結(jié)構(gòu)化程序設(shè)計中規(guī)定的三種基本流程結(jié)構(gòu)。3.4.1結(jié)構(gòu)化程序設(shè)計的三種基本流程結(jié)構(gòu)化程序設(shè)計原則是公認(rèn)的面向過程編程應(yīng)遵循的原則,它使得程序段的邏輯結(jié)構(gòu)清晰、層次分明,有效地改善了局部程序段的可讀性和可靠性,保證了其質(zhì)量,提高了開發(fā)效率。結(jié)構(gòu)化程序設(shè)計的最基本的原則是:任何程序都可以且只能由三種基本流程結(jié)構(gòu)構(gòu)成,即順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。這三種結(jié)構(gòu)的構(gòu)成參見圖。圖3.7結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)順序結(jié)構(gòu)是三種結(jié)構(gòu)中最簡單的一種,即語句按照書寫的順序依次執(zhí)行;分支結(jié)構(gòu)又稱為選擇結(jié)構(gòu),它將根據(jù)計算所得的表達(dá)式的值來判斷應(yīng)選擇執(zhí)行哪一個流程的分支;循環(huán)結(jié)構(gòu)則是在一定條件下反復(fù)執(zhí)行一段語句的流程結(jié)構(gòu)。這三種結(jié)構(gòu)構(gòu)成了程序局部模塊的基本框架。
Java語言雖然是面向?qū)ο蟮恼Z言,但是在局部的語句塊內(nèi)部,仍然需要借助于結(jié)構(gòu)化程序設(shè)計的基本流程結(jié)構(gòu)來組織語句,完成相應(yīng)的邏輯功能。Java的語句塊是由一對大括號括起的若干語句的集合。Java中,有專門負(fù)責(zé)實(shí)現(xiàn)分支結(jié)構(gòu)的條件分支語句和負(fù)責(zé)實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的循環(huán)語句。3.4.2分支語句Java中的分支語句有兩個,一個是負(fù)責(zé)實(shí)現(xiàn)雙分支的if語句,另一個是負(fù)責(zé)實(shí)現(xiàn)多分支的開關(guān)語句switch。1.if語句if語句的一般形式是: if(條件表達(dá)式) 語句塊;//if分支 else 語句塊;//else分支其中條件表達(dá)式用來選擇判斷程序的流程走向,在程序的實(shí)際執(zhí)行過程中,如果條件表達(dá)式的取值為真,則執(zhí)行if分支的語句塊,否則執(zhí)行else分支的語句塊。在編寫程序時,也可以不書寫else分支,此時若條件表達(dá)式的取值為假,則繞過if分支直接執(zhí)行if語句后面的其他語句。語法格式如下: if(條件表達(dá)式) 語句塊;//if分支 其他語句;下面是一個if語句的簡單例子,是實(shí)現(xiàn)求某數(shù)的絕對值功能的程序片段。 if(x<=0) x=-x;例 1:importjava.applet.*; 2:importjava.awt.*; 3:importjava.awt.event.*; 4: 5:publicclassFindMaxextendsApplet implementsActionListener 6:{ 7:Labelresult; 8:TextFieldin1,in2,in3; 9:Buttonbtn; 10:inta=0,b=0,c=0,max 11: 12:publicvoidinit() 13:{ 14:result=newLabel(″請先輸入三個待比 較的整數(shù)″); 15:in1=newTextField(5); 16:in2=newTextField(5); 17:in3=newTextField(5); 18:btn=newButton(″比較″); 19:add(in1); 20:add(in2); 21:add(in3); 22:add(btn); 23:add(result); 24:btn.addActionListener(this); 25:} 26:publicvoidactionPerformed(ActionEvente) 27:{ 28:a=Integer.parseInt(in1.getText()); 29:b=Integer.parseInt(in2.getText()); 30:c=Integer.parseInt(in3.getText()); 31:if(a>b) 32:if(a>c) 33:max=a; 34:else 35:max=c; 36:else 37:if(b>c) 38:max=b; 39:else 40:max=c; 41:result.setText(″三數(shù)中最大值是:″+ max); 42:} 43:}例3-7中的程序接受用戶輸入的三個整數(shù),在用戶單擊“比較”按鈕后程序調(diào)用方法actionPerformed()比較并輸出其中的最大值。第31句到第40句使用if語句的嵌套比較并得到三數(shù)中的最大值。第41句中使用了Label類對象result的一個系統(tǒng)定義好的方法setText()把原來顯示的提示信息變換成輸出信息。圖是例3-7程序運(yùn)行的結(jié)果。圖3.8例3-7的運(yùn)行結(jié)果2.switch語句switch語句是多分支的開關(guān)語句,它的一般格式如下: switch(表達(dá)式) {case判斷值1:語句塊1//分支1 case判斷值2:語句塊2//分支2 …… case判斷值n:語句塊n//分支n default:語句塊n+1//分支n+1 }switch語句在執(zhí)行時,首先計算表達(dá)式的值,這個值必須是整型或字符型,同時應(yīng)與各個case分支的判斷值的類型相一致。計算出表達(dá)式的值之后,將它先與第一個case分支的判斷值相比較,若相同,則程序的流程轉(zhuǎn)入第一個case分支的語句塊;否則,再將表達(dá)式的值與第二個case分支相比較……依此類推。如果表達(dá)式的值與任何一個case分支都不相同,則轉(zhuǎn)而執(zhí)行最后的default分支;在default分支不存在的情況下,則跳出整個switch語句。需要注意的是,switch語句的每一個case判斷,都只負(fù)責(zé)指明流程分支的入口點(diǎn),而不負(fù)責(zé)指定分支的出口點(diǎn),分支的出口點(diǎn)需要編程人員用相應(yīng)的跳轉(zhuǎn)語句來標(biāo)明??聪旅娴睦樱?/p>
switch(MyGrade) {case′A′:MyScore=5; case′B′:MyScore=4; case′C′:MyScore=3; default:MyScore=0;}假設(shè)變量MyGrade的值為“A”,執(zhí)行完switch語句后,變量MyScore的值被賦成0,而不是5!因?yàn)閏ase判斷只負(fù)責(zé)指明分支的入口點(diǎn),表達(dá)式的值與第一個case分支的判斷值相匹配后,程序的流程進(jìn)入第一個分支,將MyScore的值置為5。由于沒有專門的分支出口,所以流程將繼續(xù)沿著下面的分支逐個執(zhí)行,MyScore的值被依次置為4,3,最后變成0。如果希望程序的邏輯結(jié)構(gòu)正常完成分支的選擇,則需要為每一個分支另外編寫退出語句。
修改后的例子如下: switch(MyGrade) {case′A′:MyScore=5; break; case′B′:MyScore=4; break;case′C′:MyScore=3; break; default:MyScore=0;}break是流程跳轉(zhuǎn)語句。通過引入break語句,定義了各分支的出口,多分支開關(guān)語句的結(jié)構(gòu)就完整了。在某些情況下,switch語句的這個只有分支入口、沒有出口的功能也有它獨(dú)特的適用場合。如在若干判斷值共享同一個分支時,就可以實(shí)現(xiàn)由不同的判斷語句流入相同的分支。下面的例子是該例的進(jìn)一步修改,僅劃分及格與不及格。 switch(MyGrade) {case′A′: case′B′: case′C′:MyScore=1;//及格 break; default:MyScore=0;//不及格}3.4.3循環(huán)語句循環(huán)結(jié)構(gòu)是在一定條件下,反復(fù)執(zhí)行某段程序的流程結(jié)構(gòu),被反復(fù)執(zhí)行的程序被稱為循環(huán)體。循環(huán)結(jié)構(gòu)是程序中非常重要和基本的一種結(jié)構(gòu),它是由循環(huán)語句來實(shí)現(xiàn)的。Java的循環(huán)語句共有三種:while語句、do-while語句和for語句。它們的結(jié)構(gòu)如圖所示。圖3-9Java的三種循環(huán)語句流程1.while語句while語句的一般語法格式如下: while(條件表達(dá)式) 循環(huán)體其中條件表達(dá)式的返回值為布爾型,循環(huán)體可以是單個語句,也可以是復(fù)合語句塊。while語句的執(zhí)行過程是先判斷條件表達(dá)式的值,若為真,則執(zhí)行循環(huán)體,循環(huán)體執(zhí)行完之后再無條件轉(zhuǎn)向條件表達(dá)式再做計算與判斷;當(dāng)計算出條件表達(dá)式為假時,跳過循環(huán)體執(zhí)行while語句后面的語句。下面是一個使用while語句的例子:例 1:publicclassNarcissus 2:{ 3:publicstaticvoidmain(Stringargs[]) 4:{ 5:inti,j,k,n=100,m=1; 6: 7:while(n<1000) 8:{ 9:i=n/100; 10:j=(n-i*100)/10; 11:k=n%10; 12:if((Math.pow(i,3)+Math.pow(j,3)+ Math.pow(k,3))==n) 13:System.out.println(″找到第″+ m+++″個水仙花數(shù):″+n); 14:n++; 15:} 16:} 17:}例3-8是一個字符界面的JavaApplication程序,其功能是找出所有的水仙花數(shù)并輸出。水仙花數(shù)是三位數(shù),它的各位數(shù)字的立方和等于這個三位數(shù)本身,例如371=33+73+13,則371就是一個水仙花數(shù)。第7句到第15句定義了一個while循環(huán),每輪循環(huán)檢查100到999中的一個三位數(shù)n,取出n的個位、十位和百位數(shù)分別存入k,j,i三個整型變量;第12句利用系統(tǒng)定義好的方法Math.pow()計算i,j,k的三次方并相加,若所得的和等于n,則輸出這個水仙花數(shù);否則n加1檢查下一個三位數(shù)。循環(huán)結(jié)束時所有的三位數(shù)都將被檢查到。圖是例3-8的運(yùn)行結(jié)果。圖3.10例3-8的運(yùn)行結(jié)果2.do-while語句do-while語句的一般語法結(jié)構(gòu)如下: do循環(huán)體 while(條件表達(dá)式);do-while語句的使用與while語句很類似,不同的是它不像while語句是先計算條件表達(dá)式的值,而是無條件地先執(zhí)行一遍循環(huán)體,再來判斷條件表達(dá)式。若表達(dá)式的值為真,則再運(yùn)行循環(huán)體,否則跳出do-while循環(huán),執(zhí)行下面的語句。可以看出,do-while語句的特點(diǎn)是它的循環(huán)體將至少被執(zhí)行一次。下面是使用do-while語句的例子。例 1:importjava.io.*; 2: 3:publicclassshowCharValue 4:{ 5:publicstaticvoidmain(Stringargs[]) 6:{ 7:charch; 8: 9:try 10:{ 11:System.out.println(″請輸入一個字符, 以′#′結(jié)束″); 12:do 13:{ 14:ch=(char)System.in.read(); 15:System.out.println(″字符 ″+ch+″的整數(shù)值為″+(int)ch); 16:System.in.skip(2);//跳過回車鍵 17:}while(ch!=′#′); 18:} 19:catch(IOExceptione) 20:{ 21:System.err.println(e.toString()); 22:} 23:} 24:}例3-9是字符界面的JavaApplication程序,它接受用戶輸入的一個字符后輸出這個字符整型數(shù)值。第12句到第17句是do-while循環(huán)。第14句從系統(tǒng)標(biāo)準(zhǔn)輸入(即鍵盤)讀入一個整型數(shù)據(jù),經(jīng)強(qiáng)制類型轉(zhuǎn)換變換成字符型賦值給字符變量ch。第15句輸出ch和其整型值。第16句略過用戶輸入字符后鍵入的回車鍵。第17句檢查用戶輸入的字符是否是“#”,是則結(jié)束循環(huán),否則跳回第14句繼續(xù)接受用戶的輸入。圖是例3-9的一次運(yùn)行結(jié)果。圖3.11例3-9的運(yùn)行結(jié)果3.for語句for語句是Java語言三個循環(huán)語句中功能較強(qiáng),使用較廣泛的一個,它的流程結(jié)構(gòu)可參看圖3.9(c)。for語句的一般語法格式如下: for(表達(dá)式1;表達(dá)式2;表達(dá)式3) 循環(huán)體其中表達(dá)式2是返回布爾值的條件表達(dá)式,用來判斷循環(huán)是否繼續(xù);表達(dá)式1完成初始化循環(huán)變量和其他變量的工作;表達(dá)式3用來修整循環(huán)變量,改變循環(huán)條件,三個表達(dá)式之間用分號隔開。for語句的執(zhí)行過程是這樣的:首先計算表達(dá)式1,完成必要的初始化工作;再判斷表達(dá)式2的值,若為真,則執(zhí)行循環(huán)體,執(zhí)行完循環(huán)體后再返回表達(dá)式3,計算并修改循環(huán)條件,這樣一輪循環(huán)就結(jié)束了。第二輪循環(huán)從計算并判斷表達(dá)式2開始,若表達(dá)式的值仍為真,則繼續(xù)循環(huán),否則跳出整個for語句執(zhí)行下面的句子。for語句的三個表達(dá)式都可以為空,但若表達(dá)式2也為空,則表示當(dāng)前循環(huán)是一個無限循環(huán),需要在循環(huán)體中書寫另外的跳轉(zhuǎn)語句終止循環(huán)。例3-10PerfectNum.java 1:publicclassPerfectNum 2:{ 3:publicstaticvoidmain(Stringargs[]) 4:{ 5:intcount=1; 6:for(inti=1;i<10000;i++) 7:{ 8:inty=0; 9: 10:for(intj=1;j<i;j++) 11:if(i%j==0) 12:y+=j; 13:if(y==i) 14:{ 15:(′\t′)); 16:count++; 17:if(count%3==0) 18:System.out.println(); 19:} 20:} 21:} 22:}例3-10是字符界面的JavaApplication程序,其功能是輸出10000之內(nèi)的所有完全數(shù)。完全數(shù)是指等于其所有因子和(包括1但不包括這個數(shù)本
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 年度財務(wù)目標(biāo)達(dá)成計劃
- 廣告行業(yè)前臺工作總結(jié)
- IT行業(yè)安全管理工作總結(jié)
- 礦產(chǎn)資源行業(yè)會計的關(guān)鍵職責(zé)
- 醫(yī)學(xué)美容護(hù)士工作心得
- 2024年認(rèn)識小熊教案
- 2024年牧場之國教案
- 2024年計算機(jī)教室管理制度
- 分銷合同范本(2篇)
- 辦公室合同范本(2篇)
- 特種涂料類型——耐核輻射涂料的研究
- 二氧化碳可降解塑料生產(chǎn)項(xiàng)目建議書
- 化工裝置常用英語詞匯對照
- 幼兒園幼兒教育數(shù)學(xué)領(lǐng)域核心經(jīng)驗(yàn)
- 病例討論麻醉科PPT課件
- EBZ220A掘進(jìn)機(jī)幻燈片
- 集體跳繩賽規(guī)則
- 煤礦調(diào)度工作培訓(xùn)內(nèi)容
- 機(jī)械原理課程設(shè)計-旋轉(zhuǎn)型灌裝機(jī)運(yùn)動方案設(shè)計
- 標(biāo)準(zhǔn)《大跨徑混凝土橋梁的試驗(yàn)方法》
- 1、食品安全與營養(yǎng)健康自查制度(學(xué)校食堂)
評論
0/150
提交評論