练习总结
随机生成10个数并对10个数进行排序
public static void main(String[] args){
Random r=new Random();
int[]a=new int[10];
int i;
System.out.println("排序前:");
for(i=0;i<10;i++)//用Random随机生成10个数字并遍历
{
a[i]=r.nextInt(10)+1;
System.out.print(a[i]+" ");
}
Arrays.sort(a);
System.out.println();
System.out.println("排序后");
for(i=0;i<10;i++)
{
for(int j=i+1;j<10;j++){
if(a[i]>a[i]){//选择排序
int tmp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
System.out.print(a[i]+" ");
}
}
运行结果:
排序前:
4 2 10 1 10 9 4 2 5 5
排序后:
1 2 2 4 4 5 5 9 10 10
Process finished with exit code 0
补充说明:
Random用法:Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。
Random 类位于 java.util 包中,该类常用的有如下两个构造方法。
- Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。
- Random(long seed):使用单个 long 类型的参数创建一个新的随机数生成器。
方法 | 说明 |
---|---|
boolean nextBoolean() | 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等 |
double nextDouble() | 生成一个随机的 double 值,数值介于 [0,1.0),含 0 而不包含 1.0 |
int nextInt() | 生成一个随机的 int 值,该值介于 int 的区间,也就是 -231~231-1。如果需要生成指定区间的 int 值,则需要进行一定的数学变换 |
int nextInt(int n) | 生成一个随机的int值,该值介于[0,n),包含0而不包含n,如果想生成指定区间的int值,也需要进行一定的数学交换 |
void setSeed(long seed) | 重新设置Random对象中的种子数。设计种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同 |
long nextLong() | 返回一个随机长整型数字 |
boolean nextBoolean() | 返回一个随机布尔值 |
float nextFloat() | 返回一个随机浮点型数字 |
double nextDouble() | 返回一个随机双精度值 |
Random举例应用:
public static void main(String[] args){
Random r=new Random();
double d1=r.nextDouble();//生成[0,1,0]区间的小数
double d2=r.nextDouble()*7;//生成[0,7.0]区间的小数
int i1=r.nextInt(10);//生成[0,10]区间的整数
int i2=r.nextInt(18)-3;//生成[-3,15]区间的整数
long l1=r.nextLong();//生成一个随机长整数值
boolean b1=r.nextBoolean();//生成一个随机布尔型值
float f1=r.nextFloat();//生成一个随机浮点数
System.out.println("生成的[0,1.0]区间的小数:"+d1);
System.out.println("生成的[0,7.0]区间的小数是:"+d2);
System.out.println("生成的[0,10]区间的整数是是:"+i1);
System.out.println("生成的[-3,15]区间的整数是:"+i2);
System.out.println("生成一个随机长整形值:"+l1);
System.out.println("生成一个随机布尔型值:"+b1);
System.out.println("生成一个随机浮点型值:"+f1);
System.out.print("下期七星彩开奖号码预测:");
for(int i=1;i<8;i++){
int num=r.nextInt(9);//生成[0,9]区间的整数
System.out.print(num);
}
}
运行结果:
生成的[0,1.0]区间的小数:0.11675175919191016
生成的[0,7.0]区间的小数是:6.728182106574967
生成的[0,10]区间的整数是是:8
生成的[-3,15]区间的整数是:-2
生成一个随机长整形值:5186181068818152176
生成一个随机布尔型值:false
生成一个随机浮点型值:0.38227993
下期七星彩开奖号码预测:1054587
Process finished with exit code 0
题目:求 一个3*3矩阵对角线元素之后
public static void main(String[] args){
System.out.println("输入九个数字:");
Scanner r=new Scanner(System.in);
int [][] arr=new int[3][3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
arr[i][j]=r.nextInt();
}
}
System.out.println("第一条对角线之和为:"+arr[0][0]+arr[1][1]+arr[2][2]);
System.out.println("第二条对角线之和为:"+arr[2][0]+arr[1][1]+arr[0][2]);
}
运行结果:
输入九个数字:
1 2 3 4 5 6 7 8 9
第一条对角线之和为:159
第二条对角线之和为:753
Process finished with exit code 0
有一个已经拍好序的数组。先输入一个数,要求按原来的规律将它插入数组中
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};// 定义一个升序排序数组
System.out.print("定义的数组为:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个数:");
int addNumber = sc.nextInt();
array = Arrays.copyOf(array, array.length + 1);// 数组扩容
array[array.length - 1] = addNumber; // 暂时将数组的最后一个数赋值为插入的数
int i = 0;
//当定义的数组为升序的时候
if (array[i] <= array[array.length - 2]) {
Arrays.sort(array);// 再次排序
System.out.print("插入一个数后的数组为:");
for (i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}
运行结果:
定义的数组为:1 2 3 4 5 6 7 8 9 10
请输入一个数:43
插入一个数后的数组为:1 2 3 4 5 6 7 8 9 10 43
Process finished with exit code 0
将一个数组逆序输出
public static void main(String[] args){
int []arr={1,2,3,4,5,6,7};
System.out.println("排序前的数组为:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println();
System.out.println("逆序后的数组为:");
for(int j=arr.length-1;j>0;j--){
System.out.print(arr[j]+" ");
}
}
运行结果:
排序前的数组为:
1 2 3 4 5 6 7
逆序后的数组为:
7 6 5 4 3 2
Process finished with exit code 0
打印出杨辉三角(至少打印10行)
public static void main(String[] args){
int yh[][]=new int[10][10];
//把外层的1存放到数组中
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(i==j){
yh[i][j]=1;
}
}
}
//把第一列的1存放再数组中
for(int i=1;i<10;i++){
yh[i][0]=1;
}
//把中间变化的数放到数组中
for(int i=2;i<10;i++){
for(int j=1;j<i;j++){
yh[i][j]=yh[i-1][j-1]+yh[i-1][j];
}
}
//遍历二维数组
for(int i=0;i<yh.length;i++){
for(int j=0;j<=i;j++){
System.out.print(yh[i][j]+" ");
}
System.out.println();
}
}
运行结果:
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
Process finished with exit code 0
输入3个数a,b,c,按照大小顺序输出
public static void main(String[] args){
System.out.println("输入三个数:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
compare(a,b,c);
}
private static void compare(int x,int y,int z){
int h;
if(x>y){
//保证x<y
h=x;
x=y;
y=h;
}
if(x>z){
//保证x<z
h=x;
x=z;
z=h;
}
if(y>z){
h=y;
y=z;
z=h;
}
System.out.println("按照从大到小的顺序:"+z+" "+y+" "+x);
}
运行结果:
输入三个数:
2 4 6
按照从大到小的顺序:6 4 2
Process finished with exit code 0