arry一维数组

什么是数组

变量类型在定义或是使用时,一次只能代表一个变量。当用户传入多个变量是,便需要多个变量来进行取值和使用,过多的变量,在使用时不免显得驳杂,且易于混淆。所以数组的引入可以很好的解决这一问题。将一组数据存在同一地址块内,根据交表不同进行区分。

数组格式为:int[] arr  = new int[n];其中数组类型可以根据实际使用情况进行更改(String double等均可)arr为数组名,不同的实在定义时,数组名不能重复,因数组的单词为array,所以多用arr;等号后面的int中n代表数组长度,可根据数组的实际需要进行定义。

int[] arr = {a,b,c,d};数组的另外一种定义方式,知道数组具体内容是可以根据此方式定义,两种定义没有太明显的区别,均可使用

其中a,b,c,d等为数组中的元素。

注意事项

1.数组输出时,不能直接输出数组,若直接输出数组,结果是数组存放的物理地址,而不是数组内的元素,想输出数组内的元素应通过角标的方式进行输出,例如arr[0];

2.数字的索引(俗称下角标)从零开始,既最大的长度为数组长度-1;

3.输出时不超出数组长度,超出时将报错(数组越界)

如何从数组中取值

1.若已确定要取出数组中的某一个数,可直接用起索引来进行取值,例如arr[n];n为角标;

2.若取出数组中的每一位数,可利用for循环进行取值,代码如下

for (int i = 1; i < arr.length-1; i++) {
            int j = arr[i];
            system.out.println(j);
        }

3.foreach循环遍历数组,代码如下,其中括号内为新定义一个变量用来记录数组中每个元素的内容,:后为需遍历的数组名

int[]  arr  = {1,3,5,7,9}

for(int e: arr){

system.out.println(e)

}

练习题及答案

习题

【程序1】定义5个长度的整数数组,将1,2,3,4,5装进数组中,并将数组中的值输出

【程序2】创建5个长度的整数数组,要求得到整数数组中所有整数的和
     例:int[] a = {1, 2, 3, 4, 5}  ----> 15

(扩展题) 定义5个长度的整数数组,从控制台接值,将数据装到数组中,并求数组的和

【程序3】创建三个长度的整    数数组,随意赋值,求数组中的最大值

(扩展题) 创建五个长度的整数数组,随意赋值,求数组中的最大值

(扩展题) 唱歌比赛中,共有6位评委对选手进行打分,去掉一个最高分,
去掉一个最低分,剩下四个评委的平均分就是选手的最终成绩,
现在要求从控制台接到评委的打分,装进数组中,
并求出选手最终成绩。
    请输入第1个评委分数 :200
    请输入第2个评委分数 :300
    请输入第3个评委分数 :100
    请输入第4个评委分数 :400
    去掉一个最高分:400
    去掉一个最低分:100
    选手最终得分为:250

【程序4】创建两个长度的整数数组,把数组的第一个值,与第二个值互换

【程序5】得到整数数组拼接逗号后的结果
     例:int[] b ={11, 22, 33, 44, 55}  ----> 11, 22, 33, 44, 55

【程序6】得到字符串数组中的数据拼接后的结果
     例:String[] c ={"辽宁省", "大连市", "高新区", "敬贤街26号902室"} 
     ----> 辽宁省大连市高新区敬贤街26号902室

【程序7】统计数组中包含多少个0
     int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};

【程序8】统计成绩中及格的人数
     int[] scores = {60,59,77,53,66,12};

【程序9】统计数组中 正数和 与 负数和各是多少
     int[] scores = {-60,59,-77,53,66,-12};

【程序11】现在有一个数组,例:int[] oldArr = {1,0,3,4,2,0,7,0,5};
     要求将不为0的值存入一个新的数组中,

【程序10】创建三个长度的整数数组int[] arr = {3, 8, 2}
     要求将数组中的数据从小到大排序,并且打印数组中的数据

(扩展题) 创建五个长度的整数数组int[] arr = {2, 8, 6, 10, 1}
     要求将数组中的数据从大到小排序,并打印数组中的数据

【程序11】现在有一个数组,例:int[] oldArr = {1,0,3,4,2,0,7,0,5};
     要求将不为0的值存入一个新的数组中,
     生成新的数组为  : int[] newArr={1,3,4,2,7,5}; 

【程序12】创建4个长度的布尔类型的数组,将true, true, false, true装进数组中,然后将所有的true变成false,所有的false变成true。输出数组中的数据。

(扩展题) 
1. 大厅里有100盏灯,每盏灯都编了号码,分别为1-100。每盏灯由一个开关来控制。(开关按一下,灯亮,再按一下灯灭。开关的编号与被控制的灯相同。)开始时,灯是全灭的。现在按照以下规则按动开关。
第一次,将所有的灯点亮。
第二次,将所有2的倍数的开关按一下。
第三次,将所有3的倍数的开关按一下。
以此类推。第N次,将所有N的倍数的开关按一下。
最后还有哪几盏灯亮着?

2. 输入某年某月某日,判断这一天是这一年的第几天?

 

 

答案

public class Test {
    //变量类型 变量名 = 真实值
    //数组定义方式1:变量类型[] 变量名(多为arr) = {};
    //数组定义方式2(指定长度):变量类型[] 变量名(多为arr) = new int[n];序号叫索引。俗称下角标;
    //i = i+1;i++;i+=1;均代表自增1,数字可替换。
    static Scanner in = new Scanner(System.in);
    public static void main(String[] args) {
        /*第一题
        int[] arr = new int[]{1,2,3,4,5};
        for(int a:arr){
            System.out.println(a);
        }
        */
        /*第二题
        int[] arr = new int[]{1,2,3,4,5};
        int a = 0;
        for (int i = 0; i < arr.length; i++) {
            int j = arr[i];
            a = a+j;
            
        }
        System.out.println("所有整数和为"+a);
        */
        /*拓展题
        int[] a = new int[5];
        for (int i = 0; i < a.length; i++) {
            System.out.println("请输入第"+(i+1)+"个数字");
            int b = in.nextInt();
            a[i] = b;
        }
        for(int b:a){
            System.out.println(b);
        }
        */
        /*第三题
        int[] arr = {5,8,3};
        int temp;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                if (arr[j]>arr[i]) {
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
                
            }
            
        }
        for(int a:arr){
            System.out.println(a);
        }
        System.out.println("数组中的最大值为"+arr[2]);
        */
        /*拓展题
        int[] arr = {5,8,3,185,555};
        int temp;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 1; j < arr.length; j++) {
                if (arr[j]>arr[i]) {
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
                
            }
            
        }
        for(int a:arr){
            System.out.println(a);
        }
        System.out.println("数组中的最大值为"+arr[2]);
        */
        /*拓展题2,排序反了?!
        int[] arr = new int[6];
        int temp;
        for (int i = 1; i < 7; i++) {
            System.out.println("请输入第"+i+"位评委的成绩");
            int a = in.nextInt();
            arr[i-1] = a;
        }
        
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length - 1; j++) {
                if ( arr[0]>arr[ 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
                }
                
            }
            
        }
        int sum = 0;
        for (int i = 1; i < arr.length-1; i++) {
            int j = arr[i];
            sum = sum + j;
            
        }
        System.out.println("去掉一个最低分:"+arr[0]);
        System.out.println("去掉一个最高分"+arr[5]);
        System.out.println("选手最终得分为"+(sum/4));
        */
        
        /*拓展2方法2
        int[] arr = new int[6];
        int temp;
        for (int i = 1; i < 7; i++) {
            System.out.println("请输入第"+i+"位评委的成绩");
            int a = in.nextInt();
            arr[i-1] = a;
        }
        int a = arr[0];
        int b = arr[0];
        for (int i = 0; i < arr.length; i++) {
            int j = arr[i];
            if (arr[i]>a) {
                a = arr[i];
            }
            if (arr[i]<b) {
                b = arr[i];
            }
            
        }
        for (int i = 0; i < arr.length; i++) {
            int j = arr[i];
            
        }
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            int j = arr[i];
            sum = sum + j;
        }
        System.out.println("最高分为"+a);
        System.out.println("最低分为"+b);
        System.out.println("最后得分为"+((sum-a-b)/4));
        */
        /*程序5
        int[] b = {11,22,33,44,55};
        for (int i = 0; i < b.length; i++) {
            int j = b[i];
            System.out.print(b[i]);
            if (i<b.length-1) {
                System.out.print(",");
            }
            
        }
        */
        /*程序6,最好进行字符串拼接,方便传值
        String[] c ={"辽宁省", "大连市", "高新区", "敬贤街26号902室"};
        for (int i = 0; i < c.length; i++) {
            String st = c[i];
            System.out.print(st);
            
        }
        */
        /*程序7
        int a = 0;
        int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        for (int i = 0; i < oldArr.length; i++) {
            int j = oldArr[i];
            if (j==0) {
                a = a+1;
            }
        }
        System.out.println("数组中包含"+a+"个0");
        */
        
        /*程序8
        int[] scores = {60,59,77,53,66,12};
        int a = 0;
        for (int i = 0; i < scores.length; i++) {
            int j = scores[i];
            if (j>=60) {
                a = a+1;
            }
            
        }
        System.out.println("及格人数为"+a);
        */
        /*程序9
        int[] scores = {-60,59,-77,53,66,-12};
        int sum = 0;
        int sum1 = 0;
        for (int i = 0; i < scores.length; i++) {
            int j = scores[i];
            if (j>0) {
                sum = sum + j; 
            } else {
                sum1 = sum1+j;
            }
        }
        System.out.println("正数和为"+sum);
        System.out.println("负数和为"+sum1);
         */
        /*第十题
        int[] arr = {3,2,8};
        int temp = 0;
        //作用是让排序和比较的过程重复执行
        for (int i = 0; i < arr.length; i++) {
        //作用是对三个数字进行两两进行比较,并将较大值换到最后面
            for (int j = 0; j < arr.length-1; j++) {
                if (arr[j]>arr[j+1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
                
            }
            System.out.println(arr[i]);
        }
        */
        /*拓展
        int[] arr = {2, 8, 6, 10,1 };
        int temp = 0;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length-1; j++) {
                if (arr[j]<arr[j+1]) {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
                
            }
        System.out.print(arr[i]);    
        }
        //为什么放在外层循环内前两个会错位:本题前两位是通过第二次循环来进行判断的    
//        for(int a:arr){
//            System.out.print(a);
//        }
        */
        /*第十一题??
        int[] oldArr = {1,0,3,4,2,0,7,0,5};
        int temp = 0;
        int a = 0;
        for (int i = 0; i < oldArr.length; i++) {
            for (int j = 0; j < oldArr.length-1; j++) {
                if (oldArr[j]>oldArr[j+1]) {
                    if (oldArr[j]==0) {
                        a= a+1;
                    }
                    temp = oldArr[j];
                    oldArr[j+1] = oldArr[j];
                    oldArr[j] = temp;
                    
                    
                }
            }
            
            
        }
        int[] newarr =  new int[oldArr.length - a];
        for (int i = a; i < newarr.length; i++) {
            newarr[i-a] = oldArr[i];
        }
        for(int c:newarr){
            System.out.print(c);
        }
        */
        /*11题

        int[] oldArr = {1,0,3,4,2,0,7,0,5};
        int a = 0;
        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i] == 0) {
                a = a+1;
            }
        
        }
//        System.out.println(a);
        int[] Newarr  =  new int[oldArr.length-a];
        int  b = 0;
        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i] != 0) {
                Newarr[b] = oldArr[i];
                b  = b+1;;
            }
            
        }
        for(int c :Newarr){
            System.out.print(c+",");
        }

        
        
        /*程序12
        boolean b[] = {true,true,false,true,};
        for(boolean a:b){
            System.out.println(!a);
        }
        */
        /*拓展1
        boolean[] b = new boolean[100]; 
        for (int i = 0; i < b.length; i++) {
            b[i] = false;
        }
        System.out.println("请输入点击次数");
        int a = in.nextInt();
        for (int i = 0; i < b.length; i++) {
            if (i%a==0) {
                b[i] = !b[i];
            }
            
        }
        int d = 0;
        for(boolean c:b){
            if (c==true) {
                d = d + 1;
            }    
        }
        System.out.println("最后还有"+d+"灯亮着");
        */
        /*拓展2
        System.out.println("请输入年份");
        int y = in.nextInt();
        System.out.println("请输入月份");
        int m = in.nextInt();
        System.out.println("请输入日期");
        int d = in.nextInt();
        int[] mod = {31,28,31,30,31,30,31,31,30,31,30,31};  
        int sum = 0;
        for (int i = 0; i < m-2; i++) {
            int j = mod[i];
            sum = sum +j;
            
        }
        if (y%4==0&&y%100!=0&&m>2) {
            sum = sum+1;
        }
        System.out.println("该天是这一年的第"+(sum+d)+"天");
        */
        /*面试题,创建一个新数组其元素值为老数组除对应位数以外的和
        int[] oldarr = {1,3,5,7,9};
        int[] newarr = new int[oldarr.length];
        int sum = 0;
        for (int i = 0; i < oldarr.length; i++) {
            int j = oldarr[i];
            sum = sum+j;
            for (int j2 = 0; j2 < newarr.length; j2++) {
                newarr[j2] = sum - oldarr[j2];
                
            }
        }
        for(int e : newarr){
            System.out.println(e);
        }

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值