数组的练习

import java.util.Scanner; 
public class Shuzhu{
     public static void main(String[]args){
 //练习点1:储存6个人的身高,不采用数组接收数据的做法
     int a = 163;
     int b = 172;
     int c = 175;
     int d = 159;
     int e = 166;
     int f = 178;
     //也就是说,6个人的话,需要6个变量,假如有几百个人的时候,这个方法就不适合了。
    System.out.println("6个人的身高分别为:"+a+","+b+","+c+","+d+","+e+","+f);

//练习点2:储存6个人的身高,采用数组接收数据,并读取数组
    //可以使用数组来接收多个相同类型的数据
    //数组的定义格式:数组的数据类型+[]+数组的名称 = 数据类型[输入数组的长度]+冒号结尾
    //记住:我们不能直接给数组赋值,需要先制定数组的长度
    int[]g = new int[6];
    //在数组中存放数据:数组名称+[数组的下标]=你存放的数据+冒号结尾,如下:
     g[0] = 163;
     g[1] = 172;
     g[2] = 175;
     g[3] = 159;
     g[4] = 166;
     g[5] = 178;
    //数组数据的获取方法是数组名称加数组下标,数组下标是从0开始的。
    System.out.println("6个人的身高分别 为:"+g[0]+","+g[1]+","+g[2]+","+g[3]+","+g[4]+","+g[5]);
//使用传统的拼接方式输出下标为0-5数组的内容


//练习点3:使用for循环的方式输出下标从0-5数组的内容
    for(int i = 0; i< g.length; i++){
    //i的值实从0开始每次循环自增1,到5后结束循环,也就是i等于从0到5的值
    //我们只需要将下标的数字用变量i表示,就可以把从0-5的下标挨个输出啦
    System.out.println(g[i]);
    }

//练习点4:下面使用传统的方式输入输出下标从0-2数组的内容
    int j[] = new int[3];
    Scanner k = new Scanner(System.in);//开启键盘扫描
    System.out.println("请输入第1个整数:");
    j[0]=k.nextInt();
    System.out.println("请输入第2个整数:");
    j[1]=k.nextInt();
    System.out.println("请输入第3个整数:");
    j[2]=k.nextInt();
    System.out.println("您的输入为:"+j[0]+","+j[1]+","+j[2]);

//练习点5:下面使用for循环的方式输入输出下标从0-2数组的内容
    int l[] = new int[3];
    System.out.println("这个数组的长度为:"+l.length);
    for (int n = 0; n
    System.out.println("请输入第"+(int)n+1+"个整数:");
    l[n]=k.nextInt();
    }

    System.out.println("您的输入为:"+l[0]+","+l[1]+","+l[2]);

//练习点6:下面使用for循环的方式输入输出下标从0-2数组的内容,然后求和
    int n[] = new int[3];
    int sum = 0;//定义一个求和用的变量
    for(int o = 0; o
    System.out.println("输入:");
    n[o]=k.nextInt();
    sum = sum+n[o];//这句也可以写成:sum += n[o] 的形式
    }
    System.out.println("和是:"+sum);

//练习点7:使用简洁的方式定义一组数组
    //记住,有时候为了方便,我们也使用 int [] a = {1,2,3,4,5,6} 这样的形式来定义一个数组。
    int [] p = {20,50,30,100};
    for(int q=0;q
    System.out.println(p[q]);//输出下标为变量的数组内容
    }
    k.close();//关闭键盘扫描
    }

}

说明:

数组必须进行初始化才能使用,下面是创建一个数组abcde,然后对其初始化:

int [] abcde; // 创建一个叫abcde的int类型的数组。
abcde = new int[3];  //在隔壁的堆中,为abcde分配一个内存地址,并将分配的内存区域划分出3个房间,房间号分别是0、1、2,三个房间内的值都是0(int类型的默认值是0)


double [] ccc; // 创建一个叫ccc的double类型的数组。
abcde = new double[5];  //在隔壁的堆中,为ccc分配一个内存地址,并将分配的内存区域划分出5个房间,房间号分别是0、1、2、3、4,五个房间内的值都是0.0(double类型的默认值是0.0)

new 这个初始化过程,其实就是让数组进入堆分配空间

下面是一般的常规的写法,可将定义数组和初始化直接写成一句就可以:

int [] abcde = new int[3];

常见报错说明

数组索引越界异常

当调用一个数组,调用的索引超出数组的候范围时,就会报这个错误

int [] aaa = new int[3];
System.out.println(aaa[5]);  //错误:数组索引越界

说明:内存中划分的索引是0、1、2,调用的却是索引5,因为没这个索引所以会报错。

空指针异常

当数组创建后,没用进行初始化,当我们调用索引的时候,就会报这个错误,也就是说,数组没有创建索引。

int [] aaa;
System.out.println(aaa[1]);  //错误:空指针

说明:内存中压根就没索引所以会报错。

下面是正常的:

int [] aaa = new int[3];
System.out.println(aaa[1]);  //正常

数组的初始化

数组有两种初始化方式,一种是静态,一种是动态

静态就是指定数组的内容,动态就是只指定数组的长度而不指定内容。

int [] aaa = new int[3];  //这是动态初始化

int [] bbb = new int[]{10,20,50};  //这是静态初始化

静态初始化

数组的内存地址

数组作为方法返回值_返回

去超市买了很多东西,一个手拿不住,可以要一个塑料袋将这些东西全兜着提回家,数组就相当于这个塑料袋

一个方法里面,只能有一个返回值,或者没有返回值,不能是2个或者以上的返回值。

当我们需要返回多个参数的时候,可以使用数组进行"打包"返回.

int [] sssss = aaaaaaaaaa(10,20,30)

public static int [] aaa(int a,int b,int c){

int cess1 = a+b; //求和

int cess2 = a*b;  //求乘

int cess3 = a/b;  //求除

int [] abcdef = new int [3] ;  //准备一个能装3个数的数组(塑料袋)

abcdef [0] = cess1;  //把和装进去

abcdef [1] = cess2; //把乘装进去

abcdef [2] = cess3; //把除装进去

return abcdef;//将打包好的塑料袋返回给调用出

int [] abcedf=  {cess1,cess2,cess3};

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值