java练习总结

练习总结

随机生成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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值