一、随机数字
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();
}
}
}