数组(2)

数组经典例题与Arrays演示方法。
例如1:
计算5位学生平均分:
分别为 60 90 90 70 85分
分析:
定义总分变量
定义平均分变量
然后累加求和
循环数组

public class java1 {
    public static void main(String[] args) {
        int[]score={60,80,70,90,85};
        double avg;
        int sum=0;
        for (int i=0;i<5;i++){
            sum=sum+score[i];
        }
        avg=sum/score.length;
        System.out.println(avg);
    }
}

执行结果:算出平均分位77.0
例如2:
控制台输出五位同学分数然后算出平局分
分析
定义总分变量
定义平均分变量
控制台循环输入
循环录入数组
累加求和
求平均`

import java.util.Scanner;

public class java2 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        int[]score=new int [5];
        System.out.println("请输入五位学生成绩");
        int sum=0;
        double avg;
        for (int i=0;i<5;i++){
            int scores=input.nextInt();
            score[i]=scores;
            sum=sum+score[i];
        }
        avg=sum/score.length;
        System.out.println("平均分"+avg);
    }
}


结果为
在这里插入图片描述

例如3:
例如 一个数列 8,4,2,1,23,344,12
要求循环输出数列值
求数列所有和
猜数游戏,如果输入一个数有数列的中的数,显示猜对了,否则猜错了。
分析;
定义变=总和变量
循环输出
累加求和
控制台输入
定义boolean值为false
如果输入的数等于数组中的数
boolean为true
并且跳出循环
如果为true猜对了
否则猜错了
代码:

import java.util.Scanner;

public class java3 {
    public static void main(String[] args) {
        int sum=0;
        int[]num={8,4,2,1,23,344,12};
        System.out.println("数列");
        for (int i=0;i<num.length;i++){
            sum=sum+num[i];
            System.out.println(num[i]);
        }
        System.out.println("所有数值和"+sum);
        System.out.println();
        System.out.println();

        System.out.println("请输入一个数");
        boolean is=false;
        Scanner input=new Scanner(System.in);
        int nums=input.nextInt();
        for (int i=0;i<num.length;i++){
            int numss=num[i];
            if (nums==numss){
                is=true;
                break;
            }
        }
        if (is==true){
            System.out.println("猜对了");
        }else{
            System.out.println("猜错了");
        }

    }
}

结果:
在这里插入图片描述

例如3:一组成绩90 85 82 63 60
现在要在其中输入一个成绩并让他按降序排列
例如输入88
显示
90 88 85 82 63 60
分析
定义一个长度为6的数组
int []score={90,85,82,63,60,0}:
定义一个输入数字的数组下标的变量index。
等于数组长度-1,因为数组是从下标[0]开始

index=score.lengeth-1 //index=5
循环输入
如果输入的数大于数组中的数
则index=数组中那个数的下标
例如
addnum>int[i]
index=i
88>85
而85的下标为[1]
所以
index=1.
//定义下标
第二步:数字移位
因为你要把88移入到85前面。
使用逆序操作

定义一个新变量j
j=数组长度-1// j=5
j>index
当j>index时
j逐渐递减。
因为是往后移
所以
score[j]=score[j-1]
60=63
63=82
82=85
85=88
88=90
然后让下标等于addnum
score[index]=addnum
循环打印输出数组
代码如下

import java.util.Scanner;

public class java9 {
    public static void main(String[] args) {
        int[] nums = {99, 85, 82, 63, 60, 0};
        System.out.println("请输入插入的数字");
        Scanner input = new Scanner(System.in);
        int add = input.nextInt();
        int index = nums.length - 1;


        for (int i = 0; i < nums.length; i++) {
            if (add > nums[i]) {
                index = i;
                break;
            }

        }
        for (int j = nums.length - 1; j > index; j--) {
            nums[j] = nums[j - 1];
        }
        nums[index]=add;
        for (int i=0;i<nums.length;i++){
            System.out.println(nums[i]);
        }
    }
}

结果:
在这里插入图片描述
n逆序操作
例如:输入五个数字
然后让他们逆序显示输出
例如
你欢喜不我
输出
我不喜欢你
首先
定义长度为5的数组
循环录入
然后因为是逆序
定义一个新变量j
j=数组长度-1,j>=0,j–
然后输出
代码:

import java.util.Scanner;

public class homework5 {
    public static void main(String[] args) {
        System.out.println("请输入五句话");
        Scanner input=new Scanner(System.in);
        String[]juzi=new String[5];
        for (int i=0;i<5;i++){
            System.out.print("请输入"+(i+1)+"句话");
            String shuru=input.next();
            juzi[i]=shuru;
        }
        System.out.println("逆序后的话");//倒序

        for (int j=juzi.length-1;j>=0;j--){
            System.out.println(juzi[j]);
        }
    }
}

结果为
在这里插入图片描述
Arrays的方法
sort方法:把数组中的元素按升序排列
方式
Arrays.sort(数组名)
代码:

 int[] arrs1 = {20, 62, 58, 94, 51};
        Arrays.sort(arrs1);
       for (int i=0;i<5;i++){
           System.out.print("\t\t"+arrs1[i]);
       }

输出结果为
在这里插入图片描述

equals方法:判断两个数组中的元素是否相等。
Arrays.equals(数组1,数组2)
代码:

int[] arrs1 = {20, 62, 58, 94, 51};
        int[] arrs2 = {20, 62, 58, 94, 51, 60};
        for (int i = 0; i < 5; i++) {
            System.out.print("\t\t" + arrs1[i]);
        }
        boolean val = Arrays.equals(arrs1, arrs2);

结果为false

toString方法
把数组转换成字符串格式
String 名称=Arrays.toString(数组名)
代码:

 String str1 = Arrays.toString(arrs1); //String str = "[20, 62, 58, 94, 51]";
        System.out.println(str1);

结果为:
在这里插入图片描述

fill方法:
把数组中的元素都设置为val
Arrays.fill(数组名, 值);
代码

 Arrays.fill(arrs1, 100);

        String str2 = Arrays.toString(arrs1); //String str = "[20, 62, 58, 94, 51]";
        System.out.println(str2);

结果为
在这里插入图片描述
copyOf方法:
把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
Arrays.copyOf(数组名, 数组长度)

int[] newArr = Arrays.copyOf(arrs2, 10);
        for (int i = 0; i < newArr.length; i++) {
            System.out.print("\t"+newArr[i]);
        }

结果
在这里插入图片描述
binarySearch方法
查询元素值在数组中的下标(要求数组中元素已经按升序排列)
Arrays.binarySearch(数组名, 元素)

 int index = Arrays.binarySearch(arrs2, 58);
        System.out.println("58的下标是:" + index);

结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值