Java基础练习题Array(详解)

关于数组的使用和定义,单击下方链接…
数组的定义与使用

1.打印数组中的内容.

//用一个for循环进行遍历
public class demo01ArrayPrint {
    
    
    public static void main(String[] args) {
    
    
        int[] arr={
    
    1,2,3,4,5};
        for (int i = 0; i < arr.length; i++) {
    
    
        	//注意,此处不用换行,不然会不美观
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
}

2.创建一个长度为6的整数数组,随机生成6个0-100之间的整数放到数组中,

        然后计算出数组中所有元素之和并且打印
public class demo02ArraySum {
    
    
    public static void main(String[] args) {
    
    
        Random r=new Random();
        //将sum的值初始化为0;
        int sum=0;
        int[] arr=new int[6];
        for (int i = 0; i < 6; i++) {
    
    
        	//用数组接收随机生成的整数,范围为[0,101),左闭右开.
            arr[i]=r.nextInt(101);
        }
        System.out.println("数组中的元素为:");
        
        for (int i = 0; i < arr.length; i++) {
    
    
        	//加一个" "是为了让遍历出来的数组值看起来美观
            System.out.print(arr[i]+" ");
            //sum=sum+arr[i];将数组中的值依次叠加起来.
            sum+=arr[i];
        }
        System.out.println();
        //输出最后的结果sum.
        System.out.print("数组中元素的和为:"+sum);
    }
}

3.输出学生成绩中最高的分数.

public class demo03MaxScore {
    
    
    public static void main(String[] args) {
    
    
    	//初始化数组,将学生的成绩储存起来.
        int[] score={
    
    88,78,93,66,89,100};
        //将score[0]的值假设为最高的分数maxScore.
        int maxScore=score[0];
        //已经将score[0]的值设置为最大的,所以要从i=1开始循环
        for (int i = 1; i < score.length; i++) {
    
    
        	//用maxScore的值和数组中的元素进行比较,如果maxScore小于该元素
        	//则进行值的交换,这样会始终保持最大的值为maxScore
        	//最后输出maxScore.
            if (maxScore<score[i]){
    
    
                int temp=maxScore;
                maxScore=score[i];
                score[i]=temp;
            }
        }
        System.out.println("最高的成绩为:"+maxScore);
    }
}

4.调整数组中的数字顺序,将奇数放在一起,偶数放在一起(不论先后顺序).

public class demo04AdjustOrder {
    
    
    public static void main(String[] args) {
    
    
    	//初始化数组的值,你也可以修改代码,自己去给数组以以赋值
        int[] arr = {
    
    1, 2, 3, 4, 5, 6, 7, 8, 9,};
        for (int i = 0; i < arr.length; i++) {
    
    
            for (int j = 0; j < arr.length - 1 - i; j++) {
    
    
            	//如果是偶数,则和后一个元素互换位置
            	//那么数组就会变成前面是奇数,后面是偶数.
                if (arr[j] % 2 == 0) {
    
    
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                }
            }
        }
        //遍历打印数组.
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i] + " ");
        }
    }
}

5.创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100

public class demo05BulidArray {
    
    
    public static void main(String[] args) {
    
    
    	//创建数组,元素个数为100.
        int[] arr=new int[100];
        /*
            也可以改为:
            	for (int i = 1; i < arr.length+1; i++) {
            		arr[i]=i;
            	}
            	效果一样.
        */
        for (int i = 0; i < arr.length; i++) {
    
    
        	//本来是0,1,2,~~~,99,i+1后为1,2,~~~,100.
            arr[i]=i+1;
        }
        int count=1;
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.printf("%-2d ",arr[i]);
            //将数组内容每20个一行进行输出.
            if (count%20==0){
    
    
                System.out.println();
            }
            count++;
        }
        System.out.println();
    }
}

6.以数组为参数, 循环将数组中的每个元素乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}

public class demo06ChangeArrayNum {
    
    
    public static void main(String[] args) {
    
    
    	//初始化数组,你也可以改为自己输入.
        int[] arr={
    
    1,2,3,4,5,6};
        System.out.println("原数组是:");
        //循环遍历打印出初始数组,和改变后的数组形成一个对比
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+" ");
        }
        System.out.println();
        //让数组每个元素都乘以2.
        for (int i = 0; i < arr.length; i++) {
    
    
            arr[i]*=2;
        }
        System.out.println("改变后的数组是:");
        //遍历打印出改变后的数组.
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
}

7.给定一个整数数组,将里面的元素逆序排列.

public class demo07ReverseArray {
    
    
    public static void main(String[] args) {
    
    
        //自己给定的数组,可随意更改.
        int[] arr={
    
    0,1,2,3,4,5,6,7,8,9};
        //设定两个下标, 分别指向第一个元素和最后一个元素.
        int left=0;
        int right=arr.length-1;
        /*
            判断,当左边的下标<右边的下标时,交换两个位置的元素.
                第一个和最后一个互换,第二个和倒数第二个互换,依此类推.
            当左边下标>=右边时,说明已经全部互换完成,实现数组的逆序
                不进入while循环.
         */
        while(left<right){
    
    
            int temp=arr[left];
            arr[left]=arr[right];
            arr[right]=temp;
            //左边下标依次递加,右边下标依次递减.
            left++;
            right--;
        }
        //for循环遍历输出互换后的数组.
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }
}

8.500个人围城一个圈,从1开始报数,每数到3的倍数的人离开圈子,循环往复直到最后圈中只剩下一人为止,求剩下的人原来在圈中的位置(约瑟夫环)

package JavaArray;

public class demo08Joseph {
    
    
        public static void main(String[] args) {
    
    
            //声明长度为500数组,也可以在这里改变数组中的人数,即改变圈中人数
            boolean[] b = new boolean[500];
            //将数组中的元素全部设置为true,表示初始状态人都在圈中
            for(int i = 0;i<b.length;i++){
    
    
                b[i] = true;
            }
            //计数器,统计当前报数的位置
            int count = 0;
            //初始化圈中总人数
            int len = b.length;
            //初始化数组的索引
            int index = 0;
            //开始循环报数
            while(len > 1){
    
    
                //判断当前索引处的人是否在圈中
                if(b[index]){
    
    
                    //报数
                    count++;
                    //判断是否到达3的倍数
                    if(count == 3){
    
    
                        //计数器归零
                        count = 0;
                        //剩余人数减一
                        len--;
                        //将状态标记为离开(false)
                        b[index] = false;
                    }
                }
                //数组的索引递增
                index++;
                //如果数完一圈,则索引归零,这里很重要
                if(index == b.length){
    
    
                    index = 0;
                }
            }
            //遍历判断圈中剩余的最后一个为true的元素原来的索引即为剩下的人
            for(int i = 0;i<b.length;i++){
    
    
                if(b[i]){
    
    
                    System.out.println("剩余的人原来的位置:"+i);
                    break;
                }
            }
        }
}

猜你喜欢

转载自blog.csdn.net/weixin_47278183/article/details/120082877