专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java数组编程练习题,每日练习

Java数组编程练习题,每日练习

更新时间:2020-08-24 16:59:37 来源:动力节点 浏览1619次

1. 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

分析思路:

先通过Random类随机创建一个数组,再调用Arrays类中的排序方法sort排好序,然后再开始实现功能。

按原来的规律插入数组,很简单,只要找到合适的插入位置n,然后将n之前的数组元素直接复制到新数组的对应位置,n处插入输入的数字,n之后的元素后移一格再移到新数组就完成了。

最关键的就是要找到合适的插入位置。而查找算法显然二分查找为优。这里我投了个懒,直接使用Arrays类中的二分查找方法binarySearch()来查找输入的num,若数组中存在和num一样的数,则该方法的返回值即为该数的下标位置,那么插入位置n就是这个返回值;而如果数组中不存在num,则该方法能够返回一个负数,num比数组第一个元素还小则为-1,此时插入位置应该为0,大于第一个元素小于第二个元素为-2,此时插入位置应为1,以此类推。。。那么显然插入位置应该为返回值取绝对值再减一。

找到位置实现就简单啦。具体代码如下:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
 * 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
 *
 * @author ChenZX
 *
 */
public class Test03 {

    public static void main(String[] args) {
        Random r = new Random();
        int[] arr = new int[10];
        for(int i=0;i<10;i++){    //随机生成数组
            arr[i]= r.nextInt(100);
        }
        System.out.println(Arrays.toString(arr));
        Arrays.sort(arr);   //排序
        System.out.println(Arrays.toString(arr));

        Scanner s = new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num = s.nextInt();
        s.close();
        int bs =Arrays.binarySearch(arr, num); //二分查找的结果存入bs
        int n = 0; //插入位置
        if(bs<0){             //查找失败,则插入位置为bs的绝对值-1
            n = Math.abs(bs)-1;
        }else{        //查找成功,则插入位置即bs
            n = bs;
        }
        System.out.println(bs);

        int[] arr2 = new int[arr.length+1]; //建立一个新数组,长度为原数组长度+1
        for(int i=0;i

2. 求一个3*3矩阵对角线元素之和

分析思路:

这是一道矩阵的编程实现题。Java中矩阵一般都是通过二维数组实现的。

具体代码如下:

import java.util.Random;

/**
 * 求一个3*3矩阵对角线元素之和
 *
 * @author ChenZX
 *
 */
public class Test04 {

    public static void main(String[] args) {
        int sum = 0; //和
        int[][] arr = new int[3][3];
        Random r = new Random();
        for(int i=0;i<3;i++){    //随机生成矩阵
            for(int j=0;j<3;j++){
                arr[i][j] = r.nextInt(10);  //0到9
            }
        }
        for(int i=0;i<3;i++){      //遍历矩阵
            for(int j=0;j<3;j++){
                System.out.print(arr[i][j]+" ");   //打印矩阵元素
                if(i==j){   //如果为对角线元素
                    sum += arr[i][j];  //求和
                }
            }
            System.out.println(); //每输出3个元素换行
        }
        System.out.println("此矩阵对角线的和为:"+sum);
    }
}

以上就是动力节点java培训机构的小编针对“Java数组编程练习题,每日练习”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>