201711671208 《Java程式設計》 第一週學習計劃
阿新 • • 發佈:2018-12-10
public class converstation { public static void main(String args[]) { System.out.println("以下是師徒一行四人的對話"); System.out.println(); int i=0; pig zhuBaJie=new pig(); heShang tanSeng=new heShang(); monkey sunWuKong=new monkey(); for(i=0;i<3;i++) { switch(i) { case 0:zhuBaJie.speak1(); break; case 1:tanSeng.speak2(); break; case 2:sunWuKong.speak3(); break; } } } } class pig { void speak1() { System.out.println("師傅咱離西天還有多少里路啊?俺老豬想掉頭上月宮了。"); } } class heShang { void speak2() { int meter=108000; System.out.println("咱離西天還有"+meter+"里路呢!"); } } class monkey { void speak3() { int green=32511; System.out.println("你要敢上月宮把后羿給"+(char)green+"了,老孫饒不了你。"); } }
這是結果:
教材學習內容總結
學了資料型別轉換,switch語句具體細節,for語句等。
程式碼除錯中的問題和解決過程
原來程式碼中的一段是這樣寫的,玄學的是,如果for迴圈裡如果改為for(i=0;i<3;i++),也就是如下圖
for(i=0;i<3;i++)
{
switch(i)
{
case 0:zhuBaJie.speak();
case 1:tanSeng.speak();
case 2:sunWuKong.speak();
}
}
就會出現這樣的結果:
我的上帝啊,后羿被綠了3次,這是怎麼回事?我要還嫦娥一個清白!
原來每個case後面並沒有新增break,執行一個case後會繼續執行執行case.而且迴圈體導致同一個case被重複執行。
嗯,以後寫switch語句要記得寫break,並且break前的語句要記得寫分號“;”呢。
參考資料
《Java2 使用教程》
題外話:其實我相信嫦娥和老豬才是真愛,不然太毀童年了。