JAVA的初級練習

1.打印出深度5層楊輝三角形。

2.計算字符串中子串出現的次數 。

3.兩個字符串連接程序。

4.輸入數組,最大的與第一個元素交換,最小的與最後一個元素交換,輸出數組。

 

解答:

1. 打印出深度5層楊輝三角形。

public class PascalTriangle {
	
	public static int[][] getPascalTriangle(int nmax) {
		// 三角數組分配
		int[][] odds = new int[nmax + 1][];
		for (int n = 0; n <= nmax; n++)
			odds[n] = new int[n + 1];

		// 填充三角形數組
		for (int n = 0; n < odds.length; n++) {
			for (int k = 0; k < odds[n].length; k++) {
				/*
				 * 計算二項式係數 n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)
				 */
				int lotteryOdds = 1;
				for (int i = 1; i <= k; i++) {
					lotteryOdds = lotteryOdds * (n - i + 1) / i;
				}
				odds[n][k] = lotteryOdds;
			}
		}
		return odds;
	}

	public static void main(String[] args) {
		int nmax = 29;

		//打印三角形數組
		for (int[] row : getPascalTriangle(nmax)) {
			for (int odd : row) {
				System.out.printf("%10d", odd);
			}
			System.out.println();
		}

	}

}

 

2.計算字符串中子串出現的次數 。

public class PascalTriangle {
	
	public static int[][] getPascalTriangle(int nmax) {
		// 三角數組分配
		int[][] odds = new int[nmax + 1][];
		for (int n = 0; n <= nmax; n++)
			odds[n] = new int[n + 1];

		// 填充三角形數組
		for (int n = 0; n < odds.length; n++) {
			for (int k = 0; k < odds[n].length; k++) {
				/*
				 * 計算二項式係數 n*(n-1)*(n-2)*...*(n-k+1)/(1*2*3*...*k)
				 */
				int lotteryOdds = 1;
				for (int i = 1; i <= k; i++) {
					lotteryOdds = lotteryOdds * (n - i + 1) / i;
				}
				odds[n][k] = lotteryOdds;
			}
		}
		return odds;
	}

	public static void main(String[] args) {
		int nmax = 29;

		//打印三角形數組
		for (int[] row : getPascalTriangle(nmax)) {
			for (int odd : row) {
				System.out.printf("%10d", odd);
			}
			System.out.println();
		}

	}

}

 

3.兩個字符串連接程序。

public class ConnectStr {
	public static String connectStr1(String str1, String str2) {
		String temp = "";
		temp = str1 + str2;
		return temp;
	}

	public static String connectStr2(String str1, String str2) {
		StringBuffer temp = new StringBuffer(str1);
		temp.append(str2);
		return temp.toString();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("第一個字符串連接方法的結果:" + connectStr1("sssssss", "aaaaaaaaaaaa"));
		System.out.println("第二個字符串連接方法的結果:" + connectStr2("12345", "789"));
	}

}

 

4.輸入數組,最大的與第一個元素交換,最小的與最後一個元素交換,輸出數組。

public class ArrayMaxExMin {

	public static int[] arrayMaxExMin(int[] arr) {
		int max = arr[0];
		int indexmax = 0;
		int min = arr[0];
		int indexmin = 0;

		for (int i = 0; i < arr.length; i++) {
			if (max < arr[i]) {
				max = arr[i];
				indexmax = i;
			}

			if (min > arr[i]) {
				min = arr[i];
				indexmin = i;
			}
		}
		arr[indexmin] = max;
		arr[indexmax] = min;
		return arr;
	}

	public static void main(String[] args) {
		int[] a = { 1, 12, 3, 20, 78, 6, 10 };
		int[] b = { 1, 12, 3, 20, 78, 6, 10 };
		System.out.print("數組交換前:");
		for (int i : a) {
			System.out.print(i + " ");
		}
		System.out.println("--------------------");

		arrayMaxExMin(a);
		System.out.print("數組交換前後:");
		for (int i : a) {
			System.out.print(i + " ");
		}
		System.out.println("--------------------");
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章