9. 数组的使用,for each循环

1. 一维数组的初始化和拷贝

package com.java.basis.array;

import java.util.Arrays;

/**
 * 1. 初始化数组
 * 2. 数组的拷贝,扩展数组的长度
 * @author 物业小学徒
 *
 */
public class ArrayTest {
	public static void main(String[] args) {
		//1. 初始化数组
		int[] smallPrimes = {2,3,4,5,7,11,13};
		//2.匿名重新初始化数组
		smallPrimes = new int[] {13,15,17,18,21};
		//3.数组拷贝
		int[] luckyNumbers = smallPrimes;
		smallPrimes[4] = 23; // 这个时候luckyNumbers=smallPrimes,luckyNumbers[4]也会随之改变
		System.out.println(Arrays.toString(luckyNumbers));
		System.out.println(Arrays.toString(smallPrimes));
		//4. 将一个数组中的值全部拷贝到另一个数组中
		int[] copiedLuckyNumbers = Arrays.copyOf(luckyNumbers, luckyNumbers.length);
		System.out.println(Arrays.toString(copiedLuckyNumbers));
		// 5. 用来增加新数组的长度
		luckyNumbers = Arrays.copyOf(luckyNumbers, 2 * luckyNumbers.length);
		System.out.println(Arrays.toString(luckyNumbers));
		// 6. 命令行参数 执行: java ArrayTest -g cruel world 这个时候
		// args[0]: "-g" args[1]:"cruel" args[2]:"world"
		 
	}

}

2. 数组的排序和Math方法的使用以及Arrays

package com.java.basis.array;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 1. 数组的排序
 * 2. Arrays的其他方法见API
 * 
 * @author 物业小学徒
 *
 */
public class LotteryDrawing {

	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner in = new Scanner(System.in);
		System.out.println("How many numbers do you need to draw?");
		int k = in.nextInt();
		System.out.println("what is the highest number you can draw?");
		int n = in.nextInt();
		// fill an array with numbers 1,2,3,4,...n
		int[] numbers = new int[n];
		for (int i = 0; i < numbers.length; i++) {
			numbers[i] = i + 1;
		}
		// draw k numbers and put them into a second array
		int[] result = new int[k];
		for (int i = 0; i < result.length; i++) {
			// make a random index between 0 and n-1
			int r = (int) (Math.random() * n);
			// pick the element at the random location
			result[i] = numbers[r];
			// move then last element into the random location
			numbers[r] = numbers[n-1];
			n--;
		}
		// print the sorted array
		Arrays.sort(result);
		for(int r:result) {
			System.out.println(r);
		}
	}

}

3. 二维数组的初始化和使用

package com.java.basis.array;

import java.util.Arrays;

/**
 * 1. 多维数组
 * 2. 多维数组的初始化
 * @author 物业小学徒
 *
 */
public class CompoundInterest {
	public static void main(String[] args) {
		// 数组的初始化
		int[][] array = new int[][] {
			{1,2,3,4,5},
			{6,7,8,9,0}
		};
		System.out.println(array[0][1]);
		System.out.println(Arrays.deepToString(array));
		
		
		final double STARTRATE = 10;
		final int NRATES = 6;
		final int NYEARS = 10;
		
		double[] interestRate = new double[NRATES];
		for(int j=0;j<interestRate.length;j++) {
			interestRate[j] = (STARTRATE + j)/100.0;
		}
		
		double[][] balances = new double[NYEARS][NRATES];
		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++) {
				// get last year from previous row
				double oldBalance = balances[i-1][j];
				// compute interest
				double interest = oldBalance * interestRate[j];
				// compute this's year balance
				balances[i][j] = oldBalance + interest;
			}
		}
		
		// print
		for(int j=0;j<interestRate.length;j++) {
			System.out.printf("%9.0f%%",100 * interestRate[j]);
		}
		
		System.out.println();
		// print balance
		for(double[] row: balances) {
			for(double b:row) {
				System.out.printf("%10.2f",b);
			}
			System.out.println();
		}
		
	}
	
}

4. 不规则数组

package com.java.basis.array;

/**
 * 1. 不规则数组
 * 
 * @author 物业小学徒
 *
 */
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++) {
				int lotteryOdds = 1;
				// compute
				// compute binomial coefficient n*(n-1)*(n-2)*...*(n-k+1)/1*2*3*...*k
				for (int i = 1; i <= k; i++) {
					lotteryOdds = lotteryOdds * (n - i + 1) / i;
				}
				odds[n][k] = lotteryOdds;
			}
		}
		// print
		for (int[] row : odds) {
			for (int ood : row) {
				System.out.printf("%4d",ood);
			}
			System.out.println();
		}
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值