Posted on 2009-04-20 01:42
Silver Wong 閱讀(395)
評(píng)論(1) 編輯 收藏
一、上節(jié)回顧
上次我們學(xué)習(xí)了變量,和一些基本的運(yùn)算符的相關(guān)知識(shí)。這次我們要學(xué)習(xí)一下什么是邏輯。
btw:上次關(guān)于“+”的用法雖然最后的例子中用到了,可是沒(méi)有講。
- String str = "Hello Lilei!";
- ...
- str += " I'm Hanmeimei!";
這次我們上次寫(xiě)到的一句代碼。運(yùn)行過(guò)的同學(xué)都很清楚“+”是用來(lái)連接兩個(gè)字符串的。
比如:"AAA"+"BBB",返回結(jié)果就是"AAABBB"。
那么上述代碼中str+=" I'm Hanmeimei!";就不難理解了。結(jié)果就是"Hello Lilei! I'm Hanmeimei!"。
下面開(kāi)始這次的內(nèi)容。
小知識(shí):在Eclipse中,按下 Ctrl+Shift+F 可以讓Eclipse自動(dòng)為我們的代碼排版。
二、條件判斷語(yǔ)句
我們知道,JAVA語(yǔ)言是從程序的入口函數(shù)(public static void main())開(kāi)始,逐行執(zhí)行的。
假如我們要有一個(gè)選擇怎么辦呢?比如上次說(shuō)的,玩家打怪,打中跟沒(méi)打中,結(jié)果顯然是不一樣的。if-else語(yǔ)句幫我們解決了這個(gè)問(wèn)題。
1、if-else語(yǔ)句
語(yǔ)法結(jié)構(gòu):
- if(條件表達(dá)式)
- {
- 語(yǔ)句塊;
- }
- else
- {
- 語(yǔ)句塊;
- }
拿例子說(shuō)明問(wèn)題
- boolean hitSuccess = false;
-
- if (hitSuccess == true) {
-
- System.out.println("打中了!!");
- } else {
-
- System.out.println("真可惜");
- System.out.println("沒(méi)打中");
- }
這下很清晰了吧。程序執(zhí)行到if (hitSuccess == true)的時(shí)候,就會(huì)進(jìn)到括號(hào)里進(jìn)行判斷,如果括號(hào)里的條件成立,那么執(zhí)行下面的語(yǔ)句塊1,如果條件不成立則執(zhí)行else里面的語(yǔ)句塊2。
if()里的判斷條件可以是多種多樣的。
- int i=100;
- int j=50;
- int k=i+j;
- if(k>200)
- {語(yǔ)句塊1}
- else if(k<100)
- {語(yǔ)句塊2}
- else if(k==150)
- {語(yǔ)句塊3}
- else
- {語(yǔ)句塊4}
我們讀讀上面的代碼,很容易理解。
如果 k>200 ,執(zhí)行 語(yǔ)句塊1
如果 k<100 ,執(zhí)行 語(yǔ)句塊2
如果 k==150 ,執(zhí)行 語(yǔ)句塊3
如果 k的值都不滿足上述條件,則執(zhí)行語(yǔ)句塊4。簡(jiǎn)單吧。
注意,如果在一個(gè)if-else的結(jié)構(gòu)中,有任意一個(gè)語(yǔ)句塊被執(zhí)行了,那么其它的就都不會(huì)被執(zhí)行了。就是說(shuō)
if(k>100){...}
else if(k>150){...}
如果k的值為200,雖然兩個(gè)條件都滿足,但是當(dāng)執(zhí)行完了if(k>100){...}里面的語(yǔ)句塊之后下面的else if就不會(huì)再被執(zhí)行了。
大家可能奇怪,為什么是 k==150 ,而不是 k=150。
因此這里我們還要引出一概念:判斷比較符。
> ,大于
>=,大于等于
< ,小于
<=,小于等于
這些都跟大家八歲學(xué)的意義一樣。
要注意一下的是 == 。這個(gè)符號(hào)的作用是比較左右兩邊是否相等。還記得我們上節(jié)中說(shuō)到了 = 嗎?對(duì)了,它叫賦值號(hào)。作用是把右邊的表達(dá)示的結(jié)果賦給左邊的變量,千萬(wàn)不要跟這個(gè)比較符搞混了。
除了上述的符號(hào),常用的還有:
&& ,“與”——表示并且(and),取交集。
|| ,“或”——表示或者(or),取并集。
因此上述代碼我們還可以寫(xiě)成:
- int i=100;
- int j=50;
- int k=i+j;
- if(k>200 || k<100)
- {語(yǔ)句塊1}
- else if(k>=100 && k<=200)
- {語(yǔ)句塊2}
if-else我們就說(shuō)到這里。條件判斷的語(yǔ)法其實(shí)還有一個(gè)——switch語(yǔ)句。如果以后需要用到,再討論。講完了條件判斷,再來(lái)講講循環(huán)。
三、循環(huán)語(yǔ)句
我們做游戲,要在屏幕上生成一群怪的話,總不能自己一個(gè)個(gè)手工為每個(gè)怪都編寫(xiě)一段代碼,讓它們顯示在屏幕上吧,那樣子要死人的!!!
[size=medium]1、while循環(huán)語(yǔ)句
上面可以看出,while循環(huán)的語(yǔ)法結(jié)構(gòu)很簡(jiǎn)單。下面我們來(lái)用while循環(huán)語(yǔ)句模擬一下生成10個(gè)怪。
- int i = 0;
- while (i < 10) {
- System.out.println("我是怪" + i + ",我出來(lái)了,哈哈哈!");
- i++;
- }
咱們還是一行一行的來(lái)看(總共也沒(méi)幾行可以看-_-!)。
這個(gè) i ,我把它稱為循環(huán)控制變量。
- while (i < 10) {循環(huán)體;}
如果 i<10 那么進(jìn)入循環(huán)體,開(kāi)始重復(fù)執(zhí)行里面的代碼。
- while (i < 10) {
- System.out.println("我是怪" + i + ",我出來(lái)了,哈哈哈!");
- i++;
- }
進(jìn)入循環(huán)了總得退出啊,要不然代碼運(yùn)行到里面就不出來(lái)了,就會(huì)變成死循環(huán)。這里就靠我們的小 i 來(lái)退出。還記得 i++; 吧。就是 i 自身加1。每執(zhí)行一次循環(huán) i 的值就加1。當(dāng) i 的值等于10的時(shí)候,那么便不再滿足 i<10 的條件,循環(huán)退出。
[size=medium]2、for循環(huán)語(yǔ)句
語(yǔ)法結(jié)構(gòu)
- for(表達(dá)式1;表達(dá)式2;表達(dá)式3;)
- {
- 語(yǔ)句塊;
- }
還是用例子說(shuō)話
- for(int i=0;i < 5;i++;)
- {
- System.out.println(i);
- }
對(duì)照上面,我們很容易發(fā)現(xiàn):
表達(dá)式1 是用來(lái)聲明或初始化一個(gè)循環(huán)變量。(聲明變量i,初值為0)
表達(dá)式2 是循環(huán)控制條件。(滿足 i < 5 這個(gè)條件時(shí),循環(huán)繼續(xù),否則退出循環(huán))
表達(dá)式3 是循環(huán)控制變量的自增漲。(每次循環(huán)體完成后,執(zhí)行i++)
可以看出來(lái),只是和while循環(huán)形式上不一樣,本質(zhì)還是一樣的。
最后我們用一個(gè)“復(fù)雜”的例子來(lái)結(jié)束這一節(jié)。
我們的目的是在控制臺(tái)打印如下效果,大家可以先自己做著試試, 不看下面答案。
*
**
***
****
*****
提示:System.out.println()是換行打印。System.out.print()是不換行打印。
- package test;
-
- public class ForPro {
-
-
-
-
- public static void main(String[] args) {
- for (int i = 0; i < 5; i++) {
- for (int j = 0; j <= i; j++) {
- System.out.print("*");
- }
- System.out.println("");
- }
- }
- }
由于J2SE的內(nèi)容太多,而來(lái)這里看的人多少都有些編程的底子,這樣詳細(xì)的講解沒(méi)必要。所以我決定提前結(jié)束掉掃盲篇的內(nèi)容。關(guān)于后面還要用到的數(shù)組以及OOP的思想,我在這就不多講了,需要了解的可以自己去找點(diǎn)資料看看。下次就進(jìn)入J2ME的基礎(chǔ)篇了。
本文出自Silver Wong的博客:http://www.tkk7.com/conanwsz