第四章 陣列、字串與排序
陣列的宣告 陣列宣告時若不指定初值,則必須使用new敘述來取得記憶體空間。 陣列的索引值從0開始 int a[]=new int[6]; double b[]; b=new double[5]; int c[]={37,25,43,12,51,7}; int a[]=new int[6]; a[0],a[1],…,a[5]
陣列的宣告(續) 二維陣列 這樣宣告也可以 int a[][]={{3,7,2,5,4},{1,6,7,9,8}}; int b[][]=new double[5][5]; double c[][]; c=new double[4][6]; int a[]; int [] a; double b[][]; double [][] b;
Array的長度 屬性 length 陣列的長度(元素個數) 陣列名稱.length
複製Array System.arraycopy(s,0,t,0,s.length) 將原始陣列s的第0個元素開始的s.length個元素複製到陣列t,並由t的第0個位置開始填充
Array的排序 內建排序method sort 需匯入 java.util.Arrays 引用 Arrays.sort(一維陣列名稱)
將Array所有位置賦予相同值 Arrays.fill(陣列名稱,賦予值) Java.util.Arrays
比較兩陣列是否相等 Arrays.equals(陣列一,陣列二) Java.util.Arrays 回傳值 True False
改變陣列大小 陣列的大小允許動態改變 int a[]=new int[5]; a=new int[10];
字元陣列(C-string) 宣告方式 字元陣列轉換為字串形式 char ch[]=new char[10]; 上述的宣告僅可存放9個字元,最後一個為0,或稱為null char ch[]={’A’,’B’,’C’,’D’}; 字元陣列轉換為字串形式 方法一 String str=new String(ch); 方法二 String str=String.copyValueOf(ch);
字串陣列 字串宣告方式 字串陣列宣告方式 字串的連結使用『+』運算子來進行 String str=new String(”字串內容“); String str[]={“ABC”,”DEF”,”GHI”}; String str[]=new String[3]; 字串的連結使用『+』運算子來進行
字串的比較 字串1.equals(字串2) 字串1.compareTo(字串2) 回傳值 回傳值為兩字串第一個不同字元的差值 True False 字串1.compareTo(字串2) 回傳值為兩字串第一個不同字元的差值
字串與字串間的『 == 』關係 字串間不能以『 == 』符號進行連接比較 但是 if(str1==str2) 卻是有意義的 用以判斷字串1與字串2的記憶體參考位置是否相同
排序(Sort) 汽泡排序法(Bubble Sort)
字串的排序
子字串的處理 字串.substring(n) 字串.substring(n1,n2) 將字串index為n(含)以後的字元傾印出 將字串index為n1(含)到index為n2的字元傾印出
字串內容修改 字串.replace(字元,替換字元)
亂數(Random Number) Java中產生亂數必須使用Random class,而建立Random class的物件時必須設定「亂數種子」 若是亂數種子一樣,則每次執行程式時所產生的亂數皆相同 亂數種子的取得一般採用兩種途徑 時間 Math class中的random()
亂數(續) Random class import java.util.Random; 建立亂數物件 取得0~某一數值範圍間的任一數值 Random 變數名稱=new Random(亂數種子); 取得0~某一數值範圍間的任一數值 變數名稱.nextInt(數值) int nextInt(int n) 隨機取得0~n範圍裡的任一整數型態數值
亂數(續)
亂數(續) Calendar類別 轉換Date物件及年月日十分秒等的基本類別 提供getInstance()的method以取得Calendar物件,使用方法如下 Calendar 變數名稱=Calendar.getInstance(); 倘若提供不完整的日期資料,將會預設為1970年1月1日 使用get()方法來擷取時間 使用set()方法來設定時間 Calendar資料欄名稱 ERA, YEAR, MONTH, WEEK_OF_YEAR, WEEK_OF_MONTH, DAY_OF_MONTH, DAY_OF_YEAR, DAY_OF_WEEK, DAY_OF_WEEK_IN_MOMNTH, DATE AM_PM, HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND, ZONE_OFFSET, DST_OFFSET
亂數(續)
亂數(續) 隨機函數 Math.random() 產生一個介於0到1之間的亂數值
如何隨機產生不重複的數值 先令陣列的起始值皆為-1 每產生一個亂數即與陣列內每個元素值比較 倘若出現過則回上一步,直到不曾出現過為止
習題 A5-40 第八題 請製作一個會隨機產生10組介於50~100間6的倍數,且將所產生的倍數放置到一維陣列中,再將陣列中的元素由小到大排列的程式。