CoreJava(第三章)數組-02

六、多維數組

Java 實際上沒有多維數組, 只有一維數組 。 多維數組被解釋爲 “ 數組的數組 。

1.需求

需要建立一個數值表 , 用來顯示在不同利率下投資 $ 10 , 000 會增長多少, 利息每年兌現 , 而且又被用於投資

2.演示

package com.eleven.array;

/**
 * 建立一個數值表,用來顯示在不同利率下投資10000會增長多少,利息每年兌現,而且可以被用於投資
 * 
 * @author sywangu
 *
 */
public class DoubleArrays {
	public static void main(String[] args) {
		final double STARTRATE = 10;
		// YEARS:年
		final int YEARS = 10;
		// RATES:利率
		final int RATES = 6;

		/**
		 * 一維數組存儲利率
		 * 
		 */
		// 將利率設置爲10%-15%
		double[] interestRate = new double[RATES];
		for (int j = 0; j < interestRate.length; j++) {
			interestRate[j] = (STARTRATE + j) / 100;
		}
		/**
		 * 二維數組存儲餘額
		 */
		double[][] balances = new double[YEARS][RATES];
		// 將初始餘額設置爲10000
		for (int j = 0; j < balances[0].length; j++) {
			balances[0][j] = 10000;
		}
			// 計算未來幾年的利息
			for (int i = 1; i < balances.length; i++) {
				
				for(int j=0;j<balances[i].length;j++) {
				// 從上一行中獲取去年的餘額
				double oldBalance = balances[i - 1][j];
				// 計算利息
				double interest = oldBalance * interestRate[j];
				// 計算今年的餘額
				balances[i][j] = oldBalance + interest;
			}
		}
		// 打印利率
		for (int j = 0; j < interestRate.length; j++) {
			System.out.printf("%9.0f%%", 100 * interestRate[j]);
		}
		System.out.println();
		// 打印餘額表
		for (double[] row : balances) {
			// 打印表格行
			for (double b : row) {
				System.out.printf("%10.2f", b);
			}
			System.out.println();
		}
	}

}

3.輸出

       10%       11%       12%       13%       14%       15%
  10000.00  10000.00  10000.00  10000.00  10000.00  10000.00
  11000.00  11100.00  11200.00  11300.00  11400.00  11500.00
  12100.00  12321.00  12544.00  12769.00  12996.00  13225.00
  13310.00  13676.31  14049.28  14428.97  14815.44  15208.75
  14641.00  15180.70  15735.19  16304.74  16889.60  17490.06
  16105.10  16850.58  17623.42  18424.35  19254.15  20113.57
  17715.61  18704.15  19738.23  20819.52  21949.73  23130.61
  19487.17  20761.60  22106.81  23526.05  25022.69  26600.20
  21435.89  23045.38  24759.63  26584.44  28525.86  30590.23
  23579.48  25580.37  27730.79  30040.42  32519.49  35178.76

七、不規則數組

1.需求

利用不規則數組打印出一個三角形

2.演示

package com.eleven.array;

public class LotteryArray {
	public static void main(String[] args) {
		final int NMAX = 10;
		// 分配三角形數組
		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 - l ) * ( n - 2 ) * . . . * ( n - k + l) / ( l * 2 * 3 * . . . * k )
				 * 
				 */
				int lotteryOdds = 1;
				for (int i = 1; i <= k; i++) {
					lotteryOdds = lotteryOdds * (n - i + 1) / i;
				}
				odds[n][k] = lotteryOdds;
			}
		}
		// 打印三角形矩陣
		for (int[] row : odds) {
			for (int odd : row) {
				System.out.printf("%4d", odd);
			}
			System.out.println();
		}
	}

}

3.輸出

   1
   1   1
   1   2   1
   1   3   3   1
   1   4   6   4   1
   1   5  10  10   5   1
   1   6  15  20  15   6   1
   1   7  21  35  35  21   7   1
   1   8  28  56  70  56  28   8   1
   1   9  36  84 126 126  84  36   9   1
   1  10  45 120 210 252 210 120  45  10   1
發佈了92 篇原創文章 · 獲贊 285 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章