【数组】作业,练习,巩固,综合练习1

1.判断数组的长度是length这个属性还是length()这个方法? String有没有length()这个方法

属性、有

2。创建一个长度为6的int型一维数组,要求取值为1-30,同时要求元素值各不相同(提示可以使用Random来随机给数组赋值)

public static void main(String[] args) {
        Random r = new Random();
        int [] a =new int[6];
        for(int i=0; i<a.length;i++){
​
            a[i]=(int)(Math.random()*30+1);
            for (int j=0;j<i;j++){
                if (a[i]==a[j]){
                   i--;
                   break;
                }
            }
        }
        for(int i=0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }
}

3.下面数组定义正确的有:

A.String strs[] = { ‘a’ ‘b’ ‘c’};

!B.String[] strs = {“a”, “b”, “c”};

C.String[] strs = new String{“a” ”b” ”c”};

!D.String strs[] = new String[]{“a”, “b”, “c”};

E.String[] strs = new String[3]{“a”, “b”, “c”};

4.看以下程序:

class Demo{
public static void main(String[] args){
String foo="blue"; 
boolean[] bar=new boolean[2]; 
if(bar[0]){   
            foo="green";
} 
System.out.println(foo);
}
}
​
[输出的值为]:bule 原因:Boolean数组为赋值默认为false,不运行if语句体

5.创建一个char类型的36个元素的数组,前26个元素放置'A'-'Z', 后10个元素放置'0'-'9'。

使用for循环访问所有元素并打印出来。

提示:char类型数据运算 'A'+1 -> 'B','0'+1 -> '1'

public class demo1 {
    public static void main(String[] args) {
       char [] a=new char[36];
       char c ='A';
       char b='0';
       for (int i =0;i<a.length;i++){
           if(i<26){
               a[i]=c;
               c++;
           }else{
               a[i]=b;
               b++;
           }
       }
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]);
        }
    }
}

6.输入数组{4,6,7,8,1,2,5},最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

public class demo1 {
    public static void main(String[] args) {
      int[] a={4,6,7,8,1,2,5};
      int max=0,maxIndex=0,minIndex=0,min=0;
      for(int i=0;i<a.length;i++){//找出最大的元素
          if (a[i]>max){
              max=a[i];
              maxIndex=i;//保存这个元素的索引
          }
      }
      a[maxIndex]=a[0];//交换最大元素位置
      a[0]=max;
      for(int i=1;i<a.length;i++) {//找出最小元素
            if (a[i] < a[i-1]) {
                min=a[i];
                minIndex = i;//保存这个元素的索引
            }
        }
         a[minIndex]=a[6];//交换最小元素位置
         a[6]=min;
        for(int i=0;i<a.length;i++){//遍历
            System.out.print(a[i]);
        }
     // System.out.print(Arrays.toString(a))遍历
    }
}

7.将一个给定的整型数组转置输出, 例如: 源数组,1 2 3 4 5 6 转置之后的数组,6 5 4 3 2 1

public class Demo2 {
   public static void main(String[] args) {
   int[] a = {1, 2, 3, 4, 5, 6};
   int c = 0, b = 0;
  for (int i = a.length - 1; i >= 0; i--) {//反向输出
  System.out.print(a[i]);
 }
 }
}

8.现在有如下的一个数组: int[ ] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ; 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: int[ ] newArr = {1,3,4,5,6,6,5,4,7,6,7,5} ;

//做法一
public class demo1 {
    public static void main(String[] args) {
        int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
        int c = 0, b = 0;
        for (int i=0;i<oldArr.length;i++) {
            if(oldArr[i]!=0){//计算非零元素个数
                b++;
            }
        }//System.out.println(b);
        int[] newArr=new int[b];//定义新数组,长度为非零元素个数
        for (int i=0;i<oldArr.length;i++) {//遍历旧数组元素
            if(oldArr[i]!=0){//判断元素是否为0
              newArr[c] =oldArr[i];//不为0就赋值给新数组
               c++;
            }
        }
        for(int i=0;i<newArr.length;i++){//遍历输出数组
            System.out.print(newArr[i]);
        }
//System.out.print(Arrays.toString(newArr));//遍历输出数组
    }
}

//做法二
import java.util.ArrayList;
public class Demo2 {
   public static void main(String[] args) {
   int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
   int c = 0, b = 0;
   ArrayList<Integer> newArr=new ArrayList<>();//定义动态数组
   for (int i=0;i<oldArr.length;i++) {
   if(oldArr[i]!=0){
      newArr.add(oldArr[i]);
   }
   }System.out.println(newArr);
  }
}

9.现在给出两个数组: 数组a:"1,7,9,11,13,15,17,19" 数组b:"2,4,6,8,10" 两个数组合并为数组c。


public class demo1 {
    public static void main(String[] args) {
        int[] a = {1,7,9,11,13,15,17,19};
        int [] b={2,4,6,8,10};
        int e = 0, d = 0;
        for (int i=0;i<a.length;i++) {//计算a数组的元素个数
            e++;
        }
        for (int i=0;i<b.length;i++) {//计算b数组的元素个数
           d++;
        }int[] c=new int[e+d];//定义c数组,长度为a b 数组元素个数之和
        for(int i=0;i<a.length;i++){//遍历数组a,将值赋给数组c
            c[i]=a[i];
        }
        for(int i=0;i<b.length;i++){//遍历数组b,将值赋给数组c
            c[e+i]=b[i];
        }
        for(int i=0;i<c.length;i++){
            System.out.print(c[i]+" ");
        }
    }
}
  1. B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分是多少?

    评委打分:99,97,96,95,94,92,91,90,88,100
    public class demo1 {
        public static void main(String[] args) {
            int[] a = {99,97,96,95,94,92,91,90,88,100};
            int max=0,min=0,sum=0;
            double av =0.0;
            for (int i=0;i<a.length;i++){
                if(a[i]>max){
                    max=a[i];
                }
                sum=sum+a[i];
            }
            for (int i=1;i<a.length;i++) {
                if (a[i] < a[i - 1]) {
                    min = a[i];
                }
            }
            av=(sum-max-min)/a.length;
            System.out.println(av);
    ​
        }
    }
    
    
    

  2. 给定一个整型数组,数组成员10个,求该数组中第二大的数的下标

数据如图:{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};--0,1,2,3,4,5,6,7,8,9}
public class demo1 {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,5,6,7,8,9,0};
        int max=0,b=0,c=0;
        for(int i=0;i<a.length;i++) {
            if(a[i]>max){
                max=a[i];
                b=i;
            }
        }
        for(int i=1;i<a.length;i++) {
            if(i!=b&&a[i]>a[i-1]){
                c=i;
            }
        }System.out.println(c);
​
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值