二维数组练习

目录

一、翻转数组

PS:拓展题 

二、数组排序

三、杨辉三角

四、复制数组

 1.for 循环

2.System 类中的 arraycopy 方法

PS:拓展题


一、翻转数组

 2.尝试设计一组循环语句,将以上形式的输出结果翻转为以下形式(旋转 90 度):

package array;

public class Nine01 {
    public static void main(String[] args) {
        /*
        春眠不觉晓,处处闻啼鸟
         */
        char[][] chunxiao={{'春','眠','不','觉','晓'},
                            {'处','处','闻','啼','鸟'},
                            {'夜','来','风','雨','声'},
                            {'花','落','知','多','少'},};
        for (int i=0;i<chunxiao.length;i++){
            for (int j=0;j<chunxiao[i].length;j++){
                System.out.print(chunxiao[i][j]+"\t");
            }
            System.out.println();
        }
        System.out.println();
        //竖着输出
        for (int j=0;j<chunxiao[0].length;j++) {
            for (int i = chunxiao.length - 1; i >= 0; i--) {
                System.out.print(chunxiao[i][j]+"\t");
            }
            System.out.println();
        }
    }
}
PS:拓展题 

 

package array;

public class Nine01_01 {
    public static void main(String[] args) {
        char[][] poem = {
                {'十', '年', '生', '死', '两', '茫', '茫', '\u002C', '不', '思', '量', '\u002C', '自', '难', '忘'},
                {'千', '里', '孤', '坟', '\u002C', '无', '处', '话', '凄', '凉', '\u3002'}, // 1 11
                {'纵', '使', '相', '逢', '应', '不', '识', '\u002C', '尘', '满', '面', '\u002C', '鬓', '如', '霜'},
                {'夜', '来', '幽', '梦', '忽', '还', '乡', '\u002C', '小', '轩', '窗', '\u002C', '正', '梳', '妆'},
                {'相', '顾', '无', '言', ',', '惟', '有', '泪', '千', '行', '\u3002'},
                {'料', '得', '年', '年', '肠', '断', '处', '\u002C', '明', '月', '夜', '\u002C', '短', '松', '冈'}
        };
        int max=poem[0].length;
        for (int i=0;i< poem.length;i++){
            max=Math.max(max, poem[i].length);
        }
        for (int i = 0; i < poem[0].length; i++) { // 行, 每个元素(一维数组)的元素的下标
            for (int j = poem.length - 1; j >= 0; j--) { // 列, 二维数组的元素的下标
                if (i >= poem[j].length){ // 越界
                    System.out.print(" " + "\t");
                } else{
                    System.out.print(poem[j][i] + "\t");
                }
            }
            System.out.println();
        }


    }
}

二、数组排序

 1. 设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )

 2. 设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和
该学生的成绩、该学生的总成绩

package array;

import java.util.Arrays;

public class Nine02 {
    public static void main(String[] args) {
        //安琪拉
        //存放学生姓名
        String[] names={"安琪拉","王昭君","蔡文姬","是妲己","是张良"};
        //存放课程名称
        String[] courses={"C++","Java","Python"};
        //存放成绩
        int[][] scores={{90,89,75},
                        {59,40,100},
                        {100,99,80},
                        {80,61,61},
                        {60,100,99}};
        for (int i=0;i< scores.length;i++){
            System.out.print(names[i]+"=>");
            for (int j=0;j<scores[i].length;j++){
                System.out.print(courses[j]+":");
                System.out.print(scores[i][j]+" ");

            }
            System.out.println();
        }
        System.out.println();
        //设计程序按照各个学生的 Java 成绩进行排序 ( 降序 )
        for (int i = 0; i < scores.length; i++) {
            for (int j = 0; j < scores.length-1-i; j++) {
                if (scores[j][1]<scores[j+1][1]){
                    int[] temp=scores[j];
                    scores[j]=scores[j+1];
                    scores[j+1]=temp;
                    //名字顺序
                    String temp1=names[j];
                    names[j]=names[j+1];
                    names[j+1]=temp1;
                }

            }
        }
        for (int i=0;i<scores.length;i++){
            for (int j = 0; j < scores[i].length; j++) {
                System.out.print(scores[i][j]+" ");
            }
            System.out.println();
        }
        /*设计程序,根据学生总成绩进行排序(降序排列),并输出学生姓名、每门课程的名称和
        该学生的成绩、该学生的总成绩*/
        System.out.println();
        int[] sumArr=new int[scores.length];
        for (int i = 0; i < scores.length; i++) {
            int sum=0;
            for (int j = 0; j < scores[i].length; j++) {
                sum=sum+scores[i][j];
            }
            sumArr[i]=sum;
        }
        System.out.println(Arrays.toString(sumArr));
        System.out.println();
        for (int i = 0; i < sumArr.length; i++) {
            for (int j = 0; j < sumArr.length-1-i; j++) {
                if (sumArr[j]<sumArr[j+1]){
                    //总分顺序
                    int temp=sumArr[j];
                    sumArr[j]=sumArr[j+1];
                    sumArr[j+1]=temp;
                    //各科顺序
                    int[] temp1=scores[j];
                    scores[j]=scores[j+1];
                    scores[j+1]=temp1;
                    //名字顺序
                    String temp2= names[j];
                    names[j]=names[j+1];
                    names[j+1]=temp2;
                }
            }
        }
        System.out.println(Arrays.toString(sumArr));
        System.out.print("学生姓名 ");

        //课程名称
        for (int i = 0; i < courses.length; i++) {
            System.out.print(courses[i]+" ");
        }
        //
        System.out.print("总成绩");
        System.out.println();
        for (int i = 0; i < sumArr.length; i++) {
            System.out.print(names[i]+"\t");
            for (int j = 0; j < scores[i].length; j++) {
                System.out.print(scores[i][j]+"\t");
            }
            System.out.print("\t"+sumArr[i]);
            System.out.println();
        }
    }
}

三、杨辉三角

package array;

import java.util.Scanner;

public class Nine03 {
    public static void main(String[] args) {
        /*
        编写一个程序,生成一个给定行数的杨辉三角
         */
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入n:");
        int n=sc.nextInt();
        int[][] arr=new int[n][];
        for (int i = 0; i < arr.length; i++) {
            arr[i]=new int[i+1];//开辟内存空间
            for (int j = 0; j < arr[i].length; j++) {
                if (j==0||j==arr[i].length-1) {
                    arr[i][j] = 1;
                }else {
                    arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
    }
}

四、复制数组

有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums。

 1.for 循环
package array;

public class Nine04 {
    public static void main(String[] args) {
        /*
        有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums
         */
        int[] nums={2,11,33,44,55,66,277};
        int[] newNums=new int[nums.length];
        int index=0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i]==33){
                index=i;
            }
        }
        System.out.println("33的下标是:"+index);

        for (int i=0;i<nums.length;i++){
            if (i==index){
                continue ;
            }
                newNums[i] = nums[i];
            System.out.print(newNums[i]+"\t");
        }
    }
}
2.System 类中的 arraycopy 方法
package array;

import java.util.Arrays;

public class Nine04 {
    public static void main(String[] args) {
        /*
        有如下数组 nums ,请通过删除掉其中的 33 ,得到一个新的数组 newNums
         */
        int[] nums={2,11,33,44,55,66,277};

        //arraycopy
        int[] newNums=new int[nums.length-1];
        int index=Arrays.binarySearch(nums,33);
        System.out.println(index);
        System.arraycopy(nums,0,newNums,0,index);
        System.arraycopy(nums,index+1,newNums,index,nums.length-1-index);
        System.out.println(Arrays.toString(newNums));
    }
}
PS:拓展题

给arr的第3位添加数据6

package array;

import java.util.Arrays;

public class Nine04_4 {
    public static void main(String[] args) {
        /*
        给arr的第3位添加数据6
         */
        int index=3;
        int val=6;
        int[] arr={1,2,3,4,5};
        int[] arr1=Arrays.copyOf(arr,arr.length+1);
        System.out.println(Arrays.toString(arr1));
        System.arraycopy(arr1,index,arr1,index+1,arr1.length-1-index);
        arr1[index]=val;
        System.out.println(Arrays.toString(arr1));
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱桃桃桃桃桃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值