陣列、迴圈與容器
陣列
任何型態的物件都可以產生陣列如何建立陣列
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
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; iSystem.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); 10>
}while迴圈
int i=1;
while(i<10 br="" nbsp=""> i++;
if(i%2==0){
continue;
}
System.out.println(i); 10>
}
如果想要停止迴圈,使用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停止while迴圈則不需要break,因為迴圈中已定義了break
System.out.println("第"+i+"小時, 賺了$"+total+", 下班!");
break;
}
System.out.println("第"+i+"小時,賺了$"+sales);
}
int sales=0; //每次的業績
int total=0; //總業績
int hours=0;
while(total<=100000){除非while迴圈還有其他變數造成break
hours++;
sales=(int)(Math.random()*10000+500); //每小時可能賺500~10000元
total=total+sales;
System.out.println("第"+hours+"小時賺了$"+sales);
}
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(iSystem.out.print("請輸入一列文字: ");
num[i]=Integer.parseInt(buf.readLine());
i++;
}
Arrays.sort(num);
System.out.println("您輸入的數字排序後為:");
for(i=0; iSystem.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;所以點一下紅色X的地方將物件import
java.util.List;
或是手動在程式最上方加入
import java.util.*;建立List之後就可以任意在裡面放東西,放入的方法為 .add(放入的東西)
list.add(1);再用迴圈印出,取出的方法為 .get(第幾個位置)
list.add("2");
list.add(3.3);
for(int i=0; iSystem.out.println(list.get(i).getClass());
}
沒有留言:
張貼留言