java二维数组遍历后转为一维数组_这个真的厉害了,还没见过讲的这么详细的java数组总结,建议反复观看!...

360a086b2645ee233f8b9f3d31bd9ce1.png

1.数组动态初始化

格式:数据类型[] 数组名称=new 数据类型[元素个数];

2.数组静态初始化

指定元素的内容,系统默认长度

格式:数据类型[] 数组名称=new 数据类型[] {元素1,元素2,元素3……};
简写方式:数据类型[] 数组名称={元素1,元素2,元素3……};

3.数组中会出现的异常

异常:Throwable 类
异常分为两大类:
    Error:程序出现了严重的问题
    Exception:RuntimeException:运行时期异常(代码结构不严谨)
数组下标越界异常(属于运行时期异常):Java.lang.ArrayIndexOutOfBoundsException
        解决方案:更改下标在规定的范围内即可
    空指针异常:NullPointException(运行时期异常)(引用类型:经常开发中会遇到异常)
        解决方案:只要对该对象进行一个非空判断,如果该对象不为空,才可以使用此对象
     编译时期异常:只要不是RuntimeException,就是编译时期异常

4.数组的应用

4.1遍历:将元素的内容一一输出出来

遍历的功能(方法):定义一个方法
两个明确:
1.明确返回值类型:void
2.明确参数类型以及参数格式(传入一个数组)

import java.util.Scanner;
class ArrayDemo3{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);//创建键盘录入对象
        System.out.println("请输入数组元素的个数:");//提示并录入数据
        int n=sc.nextInt();
        int[] a=new int[n];
        System.out.println("请输入数组元素:");
        a=bianli1(a);
        bianli(a);
    }
    public static int[] bianli1(int[] a){
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<a.length;i++){
            a[i]=sc.nextInt();
        }
        return a;
    }
    public static void bianli(int[] arr){
        System.out.print("遍历结果:[");
        for(int i=0;i<arr.length;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.print("]");
    }
}

4.2数组的最值问题:求最大值/最小值

分析:1.定义数组,静态初始化
2.定义一个参照物(数组的第一个元素)
3.从第二个元素开始遍历,获取到每一个元素,然后依次与参照物比较,将较大/较小的元素赋给参照物
4.输出最大/最小值

public static int shuchu(int[] a){//判断最值方法
        int temp=a[0];
        for(int i=0;i<a.length;i++){
            if(a[i]<temp){
                temp=a[i];
            }
        }
        return temp;
    }

4.3数组的逆序:倒着打印一遍

特点:将第一个(下标为0的元素)与最后一个(下标为数组.length-1-0)的元素进行交换
要保证遍历的次数小于arr.length/2

import java.util.Scanner;//导包
    class Reversed{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);//创建键盘录入对象
        System.out.println("请输入数组元素的个数:");//提示并输入
        int n=sc.nextInt();
        int[] a=new int[n];//动态初始化一维数组
        System.out.println("请输入数组元素:");
        for(int i=0;i<n;i++){//循环输入数组元素
            a[i]=sc.nextInt();
        }
        reversed(a);//调用逆序方法
        System.out.print("逆序结果:[");
        for(int i=0;i<n;i++){//循环输出逆序结果
            System.out.print(a[i]+" ");
        }
        System.out.print("]");
    }
    public static void reversed(int[] a){//定义逆序方法
        for(int j=0;j<a.length/2;j++){//将数组中元素进行逆序
            int temp=a[j];
            a[j]=a[a.length-1-j];
            a[a.length-1-j]=temp;
        }
    }
}

4.4数组的基本元素查找法:查找元素中的某一个元素的第一次出现的角标值

通过数组名称[角标值]确定内容

public static int subscript(int[] a,int n){
        for(int i=0;i<a.length;i++){
            if(n==a[i]){
                return i;
            }
        }
        return -1;
    }

5.数组的高级排序:冒泡排序

思想:两两比较,将较大的值往后放,第一次比较完毕,最大值出现在最大索引处,依次这样比较
规律:两两比较,将较大的值往后放
总共比较次数:数组长度-1次

//冒泡排序
import java.util.Scanner;//导包
class Maopao{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);//创建键盘录入对象
        System.out.print("您想输入的数组的元素个数为:");//提示并输入
        int n=sc.nextInt();//输入数组的元素个数
        System.out.print("输入开始:");
        int[] a=new int[n];//创建一个一维数组
        for(int i=0;i<a.length;i++){//数组下标从0开始
             a[i]=sc.nextInt();//循环输入数组中的每个元素
        }
        for(int j=0;j<a.length-1;j++){
            for(int k=0;k<a.length-1-j;k++){//第0次有0个不比较;第1次有1个不比较;
                if(a[k]>a[k+1]){//两两比较,将较大的值往后放
                    int temp=a[k];//创建一个中间变量,并将大的值赋给中间变量
                    a[k]=a[k+1];//将小的值赋给前者
                    a[k+1]=temp;//将大的值赋给后者
                }
            }
        }
        System.out.print("最终排序为:");
        for(int s=0;s<=n-1;s++){
            System.out.print(a[s]+" ");
        }
    } 
}

6.二维数组

其实就是一个元素为一维数组的数组
定义:数据类型[] 数组名称[] ;
数据类型[][] 数组名称 ;
格式1:数据类型[][] 数组名称 = new 数据类型[m][n] ;
格式2:指定了一维数组的个数,一维数组的长度需要动态给定
数据类型[][] 数组名称 = new 数据类型[m][] ;
格式3:就是静态初始化
数据类型[][] 数组名称 =new 数据类型[][]{{元素1,元素2,元素3…},{元素1,元素2,元素3,…},{,}};
二维数组的遍历方法

public static void  traverse(int[][] a){
        System.out.print("遍历结果为:[");
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                System.out.print(a[i][j]+",");
            }
            System.out.print("t");
        }
        System.out.print("]");
    }

二维数组之和

public static int  sum(int[][] a){
        int d=0;
        for(int i=0;i<a.length;i++){
            for(int j=0;j<a[i].length;j++){
                 d=a[i][j]+d;
            }
        }
        return d;
    }

杨辉三角

import java.util.Scanner;
class YhTriangle{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入想要输出的行数:");
        int n=sc.nextInt(); 
        int[][] a=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<=i;j++){
                    if(j==0||i==j){
                    a[i][j]=1;
                }else{
                a[i][j]=a[i-1][j-1]+a[i-1][j];  
                }
                System.out.print(a[i][j]+" ");
            }
        System.out.println();
        }
    }
    
}

最后

感谢你看到这里,看完有什么的不懂的可以在评论区问我,觉得文章对你有帮助的话记得给我点个赞,每天都会分享java相关技术文章或行业资讯,欢迎大家关注和转发文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值