整理筆記--Java基礎(數組)
阿新 • • 發佈:2018-03-14
app lin 元素 st2 system har 出現 n) tin
int[ ]arr = new int[3]==>動態初始化。
int[ ]arr = {1,2,3}==>靜態初始化。
Java沒有多維數組,二維數組實際上是一維數組的一維數組。
例子1:
/*分析以下需求,並用代碼實現: (1)打印由7,8,9三個數組組成的三位數,要求該三位數中任意兩位數字不能相同 (2)打印格式最後的三位數字以空格分隔,如789 798 879 897 978 987 提示: 考慮使用for循環的嵌套 */ public class Test1 { public static void main(String[] args) { //這種方法最簡單 for(int i=789;i<=987;i++){ String s = String.valueOf(i); if(s.contains("7")&&s.contains("8")&&s.contains("9")){ System.out.println(s); /*char[] ch = { ‘7‘, ‘8‘, ‘9‘ }; StringBuffer sb = new StringBuffer(); // 要是比較四個數 就多加一個for循環 把比較條件添加上就行了 for (int i = 0; i < ch.length; i++) { for (int j = 0; j < ch.length; j++) { for (int j2 = 0; j2 < ch.length; j2++) { if (i != j && j != j2 && i != j2) { sb.append(ch[i]).append(ch[j]).append(ch[j2]).append(" "); }}}} System.out.println(sb);*/ }}}}
例子2:
/*數組去重問題 存在該數組: int[] arr = { 16, 23, 9, 6, 1, 23, 6, 7, 8, 23 }; 去除上面定義的數組中的重復元素,把去重復後的元素存入新數組中,並打印新數組中的元素*/ public class Test2 { public static void main(String[] args) { int[] arr = { 16, 0, 23, 0, 9, 6, 0, 1, 23, 6, 0, 7, 8, 23 }; // 1.創建新數組 int[] newArr = new int[arr.length]; int count = step1(arr, newArr); print(newArr);int[] newArr2 = new int[count]; step2(newArr, newArr2, count); print(newArr2); } public static void step2(int[] newArr, int[] newArr2, int count) { for (int i = 0; i < count; i++) { newArr2[i] = newArr[i]; }} public static int step1(int[] arr, int[] newArr) { int count = 0; for (int i = 0; i < arr.length; i++) { boolean b = true; for (int j = 0; j < count; j++) {//這一步 把j if (arr[i] == newArr[j]) { b = false; break; }} if (b) { newArr[count] = arr[i];//要出現重復的元素 就必須是兩個以上 所以進入上面判斷的時候 count就起碼等於1 循環成立 count++; }} return count; } public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); }}
例子4:
/*請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母 思路: 1.定義以星期的字母開頭的數組 String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" }; 2.定義漢字數組 String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" }; 3.死循環. 當鍵盤錄入M,W等唯一的字母時, 直接打印對應的星期 當鍵盤錄入T,S時, 繼續錄入第二個字母進行判斷 當錄入其他字母時, 直接要求繼續錄入*/ public class Test4 { public static void main(String[] args) { /*String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" }; String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" }; Scanner sc = new Scanner(System.in); while(true){ System.out.println("請輸入第一個字母:"); String s1 = sc.nextLine(); for (int i = 0; i < arr.length; i++) { if(arr[i].toUpperCase().equals(s1.toUpperCase())){ System.out.println("星期"+arrWeek[i]); return; } if(arr[i].toUpperCase().startsWith(s1.toUpperCase())){ System.out.println("請輸入第二個字母"); String s2 = sc.nextLine(); s1+=s2; //i--;//很重要!!! }} System.out.println("未查找到對應星期, 請重新輸入"); }*/ Scanner sc = new Scanner(System.in); System.out.println("請輸入對應的星期"); while (true) { String line = sc.nextLine(); if ("M".equals(line) || "W".equals(line) || "F".equals(line) || "".equals(line)) { print(line); break; } else if ("T".equals(line)) { String line2 = sc.nextLine(); if ("u".equals(line2) || "h".equals(line2)) { print(line + line2); // 這裏要傳入兩次判斷的字符串 即T+h或者T+u 只傳入單一的line不能匹配 break; } } else if ("S".equals(line)) { String line3 = sc.nextLine(); if ("a".equals(line3) || "u".equals(line3)) { print(line3); break; } } else { System.out.println("請繼續錄入"); }}} // 打印方法 private static void print(String line) { int index = getIndex(line); System.out.println(index); String st = getWeek(index); System.out.println("星期" + st); } // 找到索引後 進入這個查找對應的星期 private static String getWeek(int index) { String[] arrWeek = { "", "一", "二", "三", "四", "五", "六", "日" }; String s = ""; for (int i = 0; i < arrWeek.length; i++) { if (index == i) { s = arrWeek[i]; }} return s; } // 當用戶輸入字母的時候 進入這個方法查詢對應的索引 public static int getIndex(String line) { String[] arr = { "", "M", "Tu", "W", "Th", "F", "Sa", "Su" }; int index = -1; for (int i = 0; i < arr.length; i++) { if (line.equals(arr[i])) { index = i; }} return index; }}
例子5:
public class Test5 { public static void main(String[] args) throws IOException { Scanner xx = new Scanner(System.in); System.out.println("請輸入行數:"); int row = xx.nextInt(); System.out.println("請輸入列數:"); int coulumn = xx.nextInt(); pdd(row,coulumn); } public static void pdd(int a,int b){ for(int x=1;x<=a;x++){ for(int y=1;y<=x && y<=b;y++){ System.out.print(y+"*"+x+"="+y*x+"\t"); } System.out.println(); }}}
例子6:
public class Test6 { public static void main(String[] args) { int i,j; for(i=1;i<=5;i++){ for(j=2;j<=6-i;j++){ System.out.print(" "); } for(j=2;j<=i*2;j++){ System.out.print("*"); } System.out.println(); } for(i=6;i<=9;i++){ for(j=1;j<=i-5;j++){ System.out.print(" "); } for(j=1;j<=(10-i)*2-1;j++){ System.out.print("*"); } System.out.println(); }}}
例子7:
/** * 打印1-100之間的所有素數及個數 提示: 大於1的且只能被1和其本身整除的數叫素數 如:2 3 5 7 11 */ public class Test7 { public static void main(String[] args) { // 1.遍歷1~100 for (int i = 2; i <= 100; i++) { // 2.調用判斷素數的方法 if (isPrime(i)) { System.out.print(i + " "); }}} /*返回值類型: boolean 方法名: isPrime 參數列表: int x 當該方法返回值為true時是素數 */ private static boolean isPrime(int x) { // 1.定義布爾類型的標識符b boolean b = true; // 2.從2開始遍歷一直到x-1 for (int i = 2; i < x; i++) {// 這裏可以試數進行驗證 // 3.只要滿足對i取模等於0,則證明不是素數,此時將b置為false,並結束循環 if (x % i == 0) { b = false; break; }} // 4.將值返回 return b; }}
例子8:
public class Test08 { /*二維數組問題 假如2019CBA賽季要開始了,每個人會有三個單場籃球比賽,博彩公司預測一下幾個人的單場得分分別是: 姚明:22,33,44 易建聯:12,8,14 王治郅:33,45,65 朱芳雨:11,66,99 (1)求四個人的總得分之和 (2)求四個人中單場得分最高分 (3)求去掉單場最高分和最低分,四個人的得分總和的平均分*/ static int i,j; static int count; public static void main(String[] args) { int[][]arr={{22,33,44},{12,8,14},{33,45,65},{11,66,99}}; int a=getZongFen(arr); System.out.println("總分為"+a); int b=getZhongChang(arr); System.out.println("四人中場最高分是"+b); int max = getZuiMax(arr); int min = getZuiMin(arr); System.out.println("四人總和的平均分是"+1.0*(a-max-min)/(count-2)); } //4.求單場最低分 private static int getZuiMin(int[][] arr) { int min=arr[0][0]; for (i = 0; i < arr.length; i++) { for (j = 0; j < arr[i].length; j++) { if(min>arr[i][j]){ min=arr[i][j]; } } } return min; } //3.求單場最高分 private static int getZuiMax(int[][] arr) { int max=arr[0][0]; for (i = 0; i < arr.length; i++) { for (j = 0; j < arr[i].length; j++) { if(max<arr[i][j]){ max=arr[i][j]; } } } return max; } //2.求中場得分最高的 private static int getZhongChang(int[][] arr) { int max=arr[0][1]; for (i = 0; i < arr.length; i++) { for (j = 1; j < arr[i].length-1; j++) { if(max<arr[i][j]){ max=arr[i][j]; } } } return max; } //1.求總分 private static int getZongFen(int[][]arr) { int sum=0; for (i = 0; i < arr.length; i++) { for (j = 0; j < arr[i].length; j++) { sum+=arr[i][j]; count++; } } return sum; } }
例子9:
/** * 打印1到100之內的整數,但數字中包含9的要跳過 每行輸出5個滿足條件的數,之間用空格分隔 */ public class Test9 { public static void main(String[] args) { int count = 0; for (int i = 1; i <= 100; i++) { int ge = i % 10; int shi = i / 10; if (ge == 9 || shi == 9) { continue; } System.out.print(i + "\t"); count++; if (count % 5 == 0) { System.out.println(); }}}}
整理筆記--Java基礎(數組)