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
发布了90 篇原创文章 · 获赞 284 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_41293896/article/details/103868207
今日推荐