1. 程式人生 > 其它 >Java基礎-day06-知識點回顧與練習

Java基礎-day06-知識點回顧與練習

Java基礎-day06-知識點回顧與練習

1.求和案例

實現程式碼:

package StudentJavaSEday06;
public class Demo {
 public static void main(String[] args) {
 // 定義求和變數
 int sum = 0;
 // 迴圈獲取每一個數據
 for (int x = 1; x <= 5; x++) {
 sum += x;
 }
 System.out.println("sum:" + sum);
 }
}

執行結果:

2.求和方法呼叫

程式碼實現:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo2 {
 public static void main(String[] args) {
 // 建立物件
 Scanner sc = new Scanner(System.in);
 // 接收資料d
 System.out.println("請輸入第一個資料(整數):");
 int a = sc.nextInt();
 System.out.println("請輸入第二個資料(整數):");
 int b = sc.nextInt();
 // 呼叫方法
 int result = sum(a, b);
 // 輸出結果
 System.out.println("和:" + result);
 }
 // 求和方法
 public static int sum(int a, int b) {
 return a + b;
 }
}

執行結果:

3.看方法引數傳遞案例執行流程

(1)引數是基本型別: 形式引數的改變不影響實際引數

實現程式碼:

package StudentJavaSEday06;
//引數是基本型別: 形式引數的改變不影響實際引數。
public class Demo3 {
 public static void main(String[] args) {
 int a = 10;
 int b = 20;
 System.out.println("a:" + a + ",b:" + b);
 change(a, b);
 System.out.println("a:" + a + ",b:" + b);
 }
 public static void change(int a, int b) {
 System.out.println("a:" + a + ",b:" + b);
 a = b;
 b = a + b;
 System.out.println("a:" + a + ",b:" + b);
 }
}

執行結果:

(2)引數是引用型別: 形式引數的改變直接影響實際引數。

實現程式碼:
package StudentJavaSEday06;
//引數是引用型別: 形式引數的改變直接影響實際引數。
public class Demo4 {
 public static void main(String[] args) {
 int[] arr = { 1, 2, 3, 4, 5 };
 for (int x = 0; x < arr.length; x++) {
 System.out.println(arr[x]);
 }
 System.out.println("-----------呼叫change------------");
 change(arr);
 for (int x = 0; x < arr.length; x++) {
 System.out.println(arr[x]);
 }
 }
 public static void change(int[] arr) {
 for (int x = 0; x < arr.length; x++) {
 if (arr[x] % 2 == 0) {
 arr[x] *= 2;
 }
 }
 }
}

執行結果:

4.鍵盤錄入月份,輸出對應的季節

(1)if語句實現

實現程式碼:
package StudentJavaSEday06;
import java.util.Scanner;
/**
 * 需求: 一年有四季;3,4,5春季;6,7,8夏季;9,10,11秋季;12,1,2冬季 
 * 使用if語句實現
 * 
 * @author 奮鬥蒙
 */
public class Demo5 {
 public static void main(String[] args) {
 // 鍵盤錄入一個月份,用Scanner實現
 Scanner sc = new Scanner(System.in);
 // 接收資料
 System.out.println("請輸入一個月份(1-12):");
 int month = sc.nextInt();
 // 判斷該月份是幾月,根據月份輸出對應的季節
 /*
  * if (month == 1) { System.out.println("冬季"); } else if (month == 2) {
  * System.out.println("冬季"); } else if (month == 3) {
  * System.out.println("春季"); } else if (month == 4) {
  * System.out.println("春季"); } else if (month == 5) {
  * System.out.println("春季"); } else if (month == 6) {
  * System.out.println("夏季"); } else if (month == 7) {
  * System.out.println("夏季"); } else if (month == 8) {
  * System.out.println("夏季"); } else if (month == 9) {
  * System.out.println("秋季"); } else if (month == 10) {
  * System.out.println("秋季"); } else if (month == 11) {
  * System.out.println("秋季"); } else if (month == 12) {
  * System.out.println("冬季"); } else { System.out.println("你輸入的月份有誤"); }
  */
 // 程式碼太長了,能不能簡單一些呢?
 // 能,如何簡單一些呢?
 // 我們可以把相同季節的月份放到一起來判斷
 // (month==3 || month==4 || month==5)
 if (month == 1 || month == 2 || month == 12) {
 System.out.println("冬季");
 } else if (month == 3 || month == 4 || month == 5) {
 System.out.println("春季");
 } else if (month == 6 || month == 7 || month == 8) {
 System.out.println("夏季");
 } else if (month == 9 || month == 10 || month == 11) {
 System.out.println("秋季");
 } else {
 System.out.println("你輸入的月份有誤");
 }
 }
}

執行結果:

(2)switch語句實現

普通switch語句實現

實現程式碼:

package StudentJavaSEday06;
import java.util.Scanner;
/**
 * 使用switch語句實現
 * 普通switch方式程式碼實現
 */
public class Demo6 {
 public static void main(String[] args) {
 // 鍵盤錄入一個月份,用Scanner實現
 Scanner sc = new Scanner(System.in);
 // 接收資料
 System.out.println("請輸入月份(1-12):");
 int month = sc.nextInt();
 // 用switch語句實現
 switch (month) {
 case 1:
 System.out.println("冬季");
 break;
 case 2:
 System.out.println("冬季");
 break;
 case 3:
 System.out.println("春季");
 break;
 case 4:
 System.out.println("春季");
 break;
 case 5:
 System.out.println("春季");
 break;
 case 6:
 System.out.println("夏季");
 break;
 case 7:
 System.out.println("夏季");
 break;
 case 8:
 System.out.println("夏季");
 break;
 case 9:
 System.out.println("秋季");
 break;
 case 10:
 System.out.println("秋季");
 break;
 case 11:
 System.out.println("秋季");
 break;
 case 12:
 System.out.println("冬季");
 break;
 default:
 System.out.println("你輸入的月份有誤");
 break;
 }
 }
}

執行結果:

case穿透改進:

實現程式碼:

package StudentJavaSEday06;
import java.util.Scanner;
//通過case穿透改進
public class Demo7 {
 public static void main(String[] args) {
 // 鍵盤錄入一個月份,用Scanner實現
 Scanner sc = new Scanner(System.in);
 // 接收資料
 System.out.println("請輸入月份(1-12):");
 int month = sc.nextInt();
 //通過case穿透現象改進程式碼
 switch(month) {
 case 1:
 case 2:
 case 12:
 System.out.println("冬季");
 break;
 case 3:
 case 4:
 case 5:
 System.out.println("春季");
 break;
 case 6:
 case 7:
 case 8:
 System.out.println("夏季");
 break;
 case 9:
 case 10:
 case 11:
 System.out.println("秋季");
 break;
 default:
 System.out.println("你輸入的月份有誤");
 break;
 }
 }
}

執行結果:

5.列印5位數的迴文數

什麼是迴文數呢?舉例:12321是迴文數,個位與萬位相同,十位與千位相同。

實現程式碼:

package StudentJavaSEday06;
public class Demo8 {
 public static void main(String[] args) {
 // 5位數告訴了我們資料的範圍,用for迴圈實現
 for (int x = 10000; x < 100000; x++) {
 // 獲取每一個5位數,然後得到它的個位,十位,千位,萬位
 int ge = x % 10;
 int shi = x / 10 % 10;
 int qian = x / 10 / 10 / 10 % 10;
 int wan = x / 10 / 10 / 10 / 10 % 10;
 // 把滿足條件的資料輸出即可
 if ((ge == wan) && (shi == qian)) {
 System.out.println(x);
 }
 }
 }
}

執行結果:

6.不死神兔問題(斐波那契數列)

有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問第二十個月的兔子對數為多少?

實現程式碼:
package StudentJavaSEday06;
public class Demo9 {
 public static void main(String[] args) {
 // 定義陣列
 int[] arr = new int[20];
 // 初始化第一個月和第二個月的兔子對數
 arr[0] = 1;
 arr[1] = 1;
 // 從第三個月開始,每個月的兔子對數是前兩個月的兔子對數之和
 for (int x = 2; x < arr.length; x++) {
 arr[x] = arr[x - 2] + arr[x - 1];
 }
 System.out.println("第二十個月的時候的兔子對數是:" + arr[19]);
 }
}

執行結果:

7.求陣列中滿足要求的元素和

(1)定義一個int型別的一維陣列,內容為{171,72,19,16,118,51,210,7,18}

(2)求出該陣列中滿足要求的元素和。

(3)求和的元素的個位和十位不能包含7,並且只能為偶數。

程式碼實現:

package StudentJavaSEday06;
public class Demo10 {
 public static void main(String[] args) {
 // 定義一個int型別的一維陣列
 int[] arr = { 171, 72, 19, 16, 118, 51, 210, 7, 18 };
 // 定義一個求和變數
 int sum = 0;
 // 遍歷陣列,獲取到陣列中的每一個元素
 for (int x = 0; x < arr.length; x++) {
 // 判斷該元素是否滿足如下要求,如果是就累加,否則,不處理它
 if ((arr[x] % 10 != 7) && (arr[x] / 10 % 10 != 7) && (arr[x] % 2 == 0)) {
 sum += arr[x];
 }
 }
 // 輸出結果
 System.out.println("sum:" + sum);
 }
}

執行結果:

8.裁判評分

(1)在程式設計競賽中,有6個評委為參賽的選手打分,分數為0-100的整數分。

(2)選手的最後得分為:去掉一個最高分和一個最低分後 其餘4個選手的平均值。

(3)請寫程式碼實現。(不考慮小數部分)

實現程式碼:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo11 {
 public static void main(String[] args) {
 // 定義一個長度為6的陣列
 int[] arr = new int[6];
 // 通過鍵盤錄入的方式給出評委的分數
 Scanner sc = new Scanner(System.in);
 for (int x = 0; x < arr.length; x++) {
 System.out.println("請給出第" + (x + 1) + "個評委的分數(0-100):");
 /*
  * int number = sc.nextInt(); arr[x] = number;
  */
 arr[x] = sc.nextInt();
 }
 // 寫方法實現獲取陣列中的最大值,最小值
 int max = getMax(arr);
 int min = getMin(arr);
 // 寫方法實現陣列元素的求和
 int sum = sum(arr);
 // (和-最高分-最低分)/(arr.length-2)
 int avg = (sum - max - min) / (arr.length - 2);
 // 輸出分數即可
 System.out.println("該選手的最終得分是:" + avg);
 }
 // 陣列元素求和
 public static int sum(int[] arr) {
 int sum = 0;
 for (int x = 0; x < arr.length; x++) {
 sum += arr[x];
 }
 return sum;
 }
 // 陣列中的最小值
 public static int getMin(int[] arr) {
 int min = arr[0];
 for (int x = 1; x < arr.length; x++) {
 if (arr[x] < min) {
 min = arr[x];
 }
 }
 return min;
 }
 // 陣列中的最大值
 public static int getMax(int[] arr) {
 int max = arr[0];
 for (int x = 1; x < arr.length; x++) {
 if (arr[x] > max) {
 max = arr[x];
 }
 }
 return max;
 }
}

執行結果:

9.陣列元素反轉

(1)鍵盤錄入5個int型別的資料儲存陣列arr中

(2)定義方法將arr陣列中的內容反轉

(3)定義方法對反轉後的陣列進行遍歷

實現程式碼:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo12 {
 public static void main(String[] args) {
 // 定義一個長度為5的陣列
 int[] arr = new int[5];
 // 通過鍵盤錄入資料給陣列中的元素賦值
 Scanner sc = new Scanner(System.in);
 for (int x = 0; x < arr.length; x++) {
 System.out.println("請給出第" + (x + 1) + "個元素");
 arr[x] = sc.nextInt();
 }
 System.out.println("反轉前的陣列元素:");
 printArray(arr);
 // 定義方法將arr陣列中的內容反轉
 reverse(arr);
 System.out.println("反轉後的陣列元素:");
 // 定義方法遍歷陣列
 printArray(arr);
 }
 // 遍歷陣列
 public static void printArray(int[] arr) {
 System.out.print("[");
 for (int x = 0; x < arr.length; x++) {
 if (x == arr.length - 1) {
 System.out.println(arr[x] + "]");
 } else {
 System.out.print(arr[x] + ", ");
 }
 }
 }
 /*
  * 兩個明確: 返回值型別:void 引數列表:int[] arr
  */
 public static void reverse(int[] arr) {
 /*
  * 利用for迴圈遍歷陣列 初始化表示式定義兩個指標,記錄第一個元素和最後一個元素:int min = 0,max =
  * arr.length-1; 布林表示式:min<max; 步進表示式:min++,max--;
  */
 for (int min = 0, max = arr.length - 1; min <= max; min++, max--) {
 // 利用第三方變數完成陣列中的元素交換
 int temp = arr[min];
 arr[min] = arr[max];
 arr[max] = temp;
 }
 }
}

執行結果:

10.資料加密

鍵盤錄入資料,要求資料是四位的整數,現需要對資料進行加密,加密規則如下:

(1)每位數字都加上5,然後除以10的餘數代替該數字,

(2)再將第一位和第四位交換,第二位和第三位交換,

(3)請把加密後的資料輸出到控制檯

實現程式碼:

package StudentJavaSEday06;
import java.util.Scanner;
public class Demo13 {
 public static void main(String[] args) {
 //鍵盤錄入一個四位數
 Scanner sc = new Scanner(System.in);
 //接收資料
 System.out.println("請輸入一個四位數:");
 int number = sc.nextInt();
 //分別得到該資料的每一個位上的資料
 int ge = number%10;
 int shi = number/10%10;
 int bai = number/10/10%10;
 int qian = number/10/10/10%10;
 //定義一個數組
 int[] arr = new int[4];
 arr[0] = qian;
 arr[1] = bai;
 arr[2] = shi;
 arr[3] = ge;
 //遍歷陣列進行加密
 for(int x=0; x<arr.length; x++) {
 //加密規則
 //每位數字都加上5,然後除以10的餘數代替該數字
 arr[x] += 5;
 arr[x] %= 10;
 }
 //再將第一位和第四位交換,第二位和第三位交換
 int temp = arr[0];
 arr[0] = arr[3];
 arr[3] = temp;
 temp = arr[1];
 arr[1] = arr[2];
 arr[2] = temp;
 //輸出加密後的資料
 for(int x=0; x<arr.length; x++) {
 System.out.print(arr[x]);
 }
 System.out.println();
 }
}

執行結果:

11.定義一個方法傳入一個5-10之間的隨機數,根據傳入的隨機數建立陣列,並向該陣列再次存入5-10之間的幾個隨機元素。最後返回該陣列並遍歷

實現程式碼:

package StudentJavaSEday06;
import java.util.Random;
public class Demo14 {
 public static void main(String[] args) {
 Random r = new Random();
 int num = r.nextInt(6)+5;
 int [] arr = getArr(num);
 for (int i = 0; i < arr.length; i++) {
 System.out.println(arr[i]);
 }
 }
 private static int[] getArr(int num) {
 Random r = new Random();
 int[] arr = new int[num];
 for (int i = 0; i < arr.length; i++) {
 arr[i] = r.nextInt(6)+5;
 }
 return arr;
 }
}

執行結果: