六、多維數組
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