2013年11月15日 星期五

JAVA基礎程式設計 6

陣列、迴圈與容器

陣列

任何型態的物件都可以產生陣列

如何建立陣列

int num[]=new int[10] ;
//建立1個名叫num的int 陣列長度為10,裡面可以存放10個int

String str[]=new String[10]

//建立1個名叫str的String 陣列長度為10,裡面可以存放10個String

int[] num= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//建立1個名叫num的int 陣列長度直接為{   }中物件的數量,以逗號分隔

 如何存取陣列

str[0]="第1個字串";
str[1]="第2個字串";
str[9]="第10個字串";
num[0]=1;
num[1]=2;
num[9]=10;
System.out.println(num[0]);
System.out.println(num[1]);
System.out.println(num[9]); 

如果用到「 int[10] 」無論如何都會得到錯誤訊息,因此我們很容易發現:
建立陣列時由1開始,存取陣列時由第0開始。

迴圈 part.1

Java 中有兩種迴圈,一種是 while 迴圈 (while loop) ,另一種則是 for 迴圈 (for loop) ,兩種迴圈可以互相替代。

while 迴圈的用法

 while( )中的條件達成前,迴圈不會停止。直到條件達成
int i = 0; // 設定控制變數
        while (i <= 10) { //當i小於等於10的時候重複執行
            // 要做的事情
            System.out.println(i);
            i++; // 調整控制變數值 i=i+1
        }
反過來
int i = 10 // 設定控制變數
while (i > 0) {//當i大於等於0的時候重複執行
    // 迴圈工作區
    System.out.println(i);
    i--; // 調整控制變數值 i=i-1
}

for迴圈的用法

for 迴圈則是把控制變數的設定、迴圈結束條件、控制變數的調整全都寫在 for(  )之中
for (int i = 0; i <1 code="">0; i++) {//宣告1個數值i=0, 當i小於10時停止, 每次+1
    System.out.println(i);
}
反過來
for (int i = 10; i > 0; i--) {//宣告1個數值i=10, 當i大於0時停止, 每次-1
    System.out.println(i);
}

 基本陣列與迴圈的應用


int[] num= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
       
        for(int i=0; i            System.out.println(num[i]);
        }

 

綜合練習: 印出0~100中的單數,並將所有單數相加總

提示1: 以%求餘數,如 10%2 是求 10除2 的餘數,結果為0。表示10能被2整除
提示2: 迴圈起始從0開始到100,i=0, i<=100

巢狀迴圈的應用

巢狀迴圈是利用外層迴圈控制內層迴圈的數量,內層迴圈受外層迴圈觸發,僅控制自迴圈內的數量。


for (int i = 1; i <= 5; i++) { //注意i的值
           
            System.out.println("外層迴圈執行第"+i+"次");           
           
            for (int j = 1; j <= 5; j++) { //注意j的值

                System.out.print("內層迴圈執行第"+j+"次, ");

            }
}

 印出三角形

for (int i = 1; i <= 5; i++) { // 高度為5           
           
            for (int j = 1; j <= i; j++) { //寬度為外層迴圈次數的遞增

                System.out.print("*");

            }
           
            System.out.println(""); //每次換1行            
}

  印出反向的三角形

for (int i = 5; i >= 0; i--) { // 高度為5           
           
            for (int j = 1; j <= i; j++) {//寬度為外層迴圈次數的遞增

                System.out.print("*");

            }
           
            System.out.println("");//每次換1行            
}

跳出迴圈

如果迴圈中有任何意外想要跳過1次迴圈時,使用continue;
for 迴圈
for(int i=0; i<10 br="" i="">           
             if(i%2==0){ //雙數跳過
                 continue;
             }
             System.out.println(i);              
}
 while迴圈
int i=1;
        while(i<10 br="" nbsp="">            i++;
            if(i%2==0){
                continue;
            }
            System.out.println(i);            
}


如果想要停止迴圈,使用break;
for迴圈
int sales=0; //每次的業績
        int total=0; //總業績

        for(int i=1; i<=12; i++){ //每天最多可能工作的時間
           
             sales=(int)(Math.random()*10000+500); //每小時可能賺500~500元
           
             total=total+sales;
             if(total>100000){ //如果賺了100000停止
                 System.out.println("第"+i+"小時, 賺了$"+total+", 下班!");
                 break;
             }
             System.out.println("第"+i+"小時,賺了$"+sales);
   }
while迴圈則不需要break,因為迴圈中已定義了break
        int sales=0; //每次的業績
        int total=0; //總業績
        int hours=0;         
        while(total<=100000){
           
            hours++;
            sales=(int)(Math.random()*10000+500); //每小時可能賺500~10000元
            total=total+sales;           
            System.out.println("第"+hours+"小時賺了$"+sales);           
           
        }
除非while迴圈還有其他變數造成break
        int sales=0; //每次的業績
        int total=0; //總業績
        int hours=0;
        while(total<=100000){
           
            hours++;
            sales=(int)(Math.random()*10000+500); //每小時可能賺500~10000元
            total=total+sales;           
            System.out.println("第"+hours+"小時賺了$"+sales);   
           
            if(hours>=12){ //超過12小時停止迴圈
                System.out.println("今天做了"+hours+"小時賺了$"+total);
                break;
            }

           
        }

綜合練習: 印出九九乘法表內容,包含算式及答案,迴圈方法不限

結果應為

1*1=1    1*2=2    1*3=3    1*4=4    1*5=5    1*6=6    1*7=7    1*8=8    1*9=9   
2*1=2    2*2=4    2*3=6    2*4=8    2*5=10    2*6=12    2*7=14    2*8=16    2*9=18   
3*1=3    3*2=6    3*3=9    3*4=12    3*5=15    3*6=18    3*7=21    3*8=24    3*9=27   
4*1=4    4*2=8    4*3=12    4*4=16    4*5=20    4*6=24    4*7=28    4*8=32    4*9=36   
5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    5*6=30    5*7=35    5*8=40    5*9=45   
6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36    6*7=42    6*8=48    6*9=54   
7*1=7    7*2=14    7*3=21    7*4=28    7*5=35    7*6=42    7*7=49    7*8=56    7*9=63   
8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64    8*9=72   
9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81

綜合練習: 鍵盤輸入多組數字,排序後印出

請輸入一列文字: 9
請輸入一列文字: 6
請輸入一列文字: 27
您輸入的數字排序後為:
6, 9, 27



BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        int num[]=new int[3];
        int i=0;
        String text;
       
        while(i            System.out.print("請輸入一列文字: ");
            num[i]=Integer.parseInt(buf.readLine());
            i++;
        }       
       
        Arrays.sort(num);
        System.out.println("您輸入的數字排序後為:");
        for(i=0; i            System.out.print(num[i]+", ");           
        }


容器

  • List:循序索引的串列結構
  • Set:不允許相同物件存在的集合結構
  • Map:使用 Key-Value(鍵-值) 方式儲存的結構 

Map 與 HashMap()

利用HashMap我們已經達到可以利用key(鍵)迅速取得value(值)
建立HeshMap

 Map=new HashMap();

 

因為需要用到2個物件
java.util.HashMap
java.util.Map

所以點一下紅色X的地方將物件import
或是手動在程式最上方加入
import java.util.*;
建立HashMap後就可以在裡面任意放東西,放入的方法為.put("名子", 東西)

map.put("name", "小明");
map.put("height", 175);
map.put("weight", 70);
印出所有資料
System.out.println(map);
也可以個別取出,取出的方法為.get("放入的名子");
System.out.println(map.get("name"));
System.out.println(map.get("height"));
System.out.println(map.get("weight"));

List 與 ArrayList()

使用 Array 結構實作 List,而其特性為 可循序的應用,實現對List當中的任一筆資料存取。同時可以存放不同型態的資料。

建立ArrayList

List=new ArrayList();




因為需要用到2個物件
java.util.ArrayList;
java.util.List;
所以點一下紅色X的地方將物件import

或是手動在程式最上方加入
import java.util.*;
建立List之後就可以任意在裡面放東西,放入的方法為 .add(放入的東西)
list.add(1);
list.add("2");
list.add(3.3);
再用迴圈印出,取出的方法為 .get(第幾個位置)

for(int i=0; i             System.out.println(list.get(i).getClass());
}

綜合練習

沒有留言:

張貼留言