学习随笔——Java数组

一、随机数字

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;

public class LotteryDrawing {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        System.out.print("你要猜几个数字?");
        int k = in.nextInt();

        System.out.print("你能猜的最高数字是多少?");
        int n = in.nextInt(); 

        //填充一个数字 1 2 3 ... n
        int[] numbers = new int[n];
        for(int i=0;i<numbers.length;i++)
            numbers[i] = i+1;

        //画出k个数字然后把它们放到第二个数组里
        int[] result = new int[k];
        for (int i=0;i<result.length;i++){
            //在0和n-1之间做一个随机的索引
            int r = (int)(Math.random()*n);

            //在随机位置选择元素
            result[i] = numbers[r];

            //将最后一个元素移动到随机位置
            numbers[r] = numbers[n-1];
            n--;
        }

        //打印数组排序
        Arrays.sort(result);
        System.out.println("选择以下的组合。它会让你富有!");
        for(int r:result)
            System.out.println(r);
    }

}

二、银行余额

public class CompoundInterest {

    public static void main(String[] args) {
        final double STARTRATE = 10;
        final int NRATES = 6;
        final int NYEARS = 10;

        //将利率设为 10 ... 15%
        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];

        //将初始余额设置为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();
        }
    }

}

三、打印三角数组

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-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;
            }
        //打印三角形的数组
        for(int[] row :odds){
            for(int odd:row)
                System.out.printf("%4d", odd);
            System.out.println();
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值