• 任务描述
  • 相关知识
  • Arrays类
  • Arrays 类常用方法
  • fill 方法详细介绍
  • sort 方法详细介绍
  • copyOf 方法和 copyOfRange 方法详细介绍
  • binarySearch 方法
  • 编程要求
  • 测试说明
  • 使用 import java.util.Arrays;导入该类;
  • 使用Arrays.方法名(数组)操作数组。

Arrays 类常用方法

方法名

用法

toString 方法

该方法主要返回数组元素的字符串形式

fill 方法

该方法主要用于替换数组中的元素

sort 方法

该方法主要用于给数组元素排序

copyOf 方法

该方法主要用于复制数组

copyOfRange 方法

该方法主要用于复制数组,需要指定起始位置

binarySearch 方法

该方法主要用于查找指定元素索引值

toString用法:

打印数组时,用toString可直接打印其字符串形式,见下:

System.out.print(Arrays.toString(arr));

打印结果和形式:

[18, 566, 452, 63, 18, 356, 26, 256, 18, 85876, 575, 45]

fill 方法详细介绍

fill 方法用来替换数组中的元素。它既可以直接替换数组中所有元素,也可以通过指定索引范围来替换部分元素。

直接替换数组中所有元素:



  1. fill(arr, value)

参数说明:

  • 第一个参数(arr)为数组;
  • 第二个参数(value)为替换值。

示例:把数组中所有元素替换成 8。



  1. public static void main(String[] args) {
  2. int [] arr={2,3,4,8,-2,0,-43,88};
  3. Arrays.fill(arr,8); // 使用fill方法把数组中所有值替换成8
  4. System.out.println(Arrays.toString(arr)); // 打印新数组中的值
  5. }

执行结果:



  1. [8, 8, 8, 8, 8, 8, 8, 8]

替换部分元素



  1. fill(arr, fromIndex,toIndex, value)

参数说明:

  • 第一个参数(arr)为数组;
  • 第二个参数(fromIndex)为数组中需要被替换的起始索引值(包含);
  • 第三个参数(toIndex)为数组中需要被替换的结束索引值(不包含);
  • 第四个参数(value)为替换值。

示例:把数组中部分元素替换成 8。



  1. public static void main(String[] args) {
  2. // 请在Begin-End间编写代码
  3. /********** Begin **********/
  4. int [] arr={2,3,4,8,-2,0,-43,88};
  5. Arrays.fill(arr,1,5,8); // 使用fill方法把数组中部分值替换成8
  6. System.out.println(Arrays.toString(arr)); // 打印新数组中的值
  7. /********** End **********/

  8. }

执行结果:



  1. [2, 8, 8, 8, 8, 0, -43, 88]

sort 方法详细介绍

sort 方法用于给数组元素排序,默认排序方式为升序。

示例:



  1. public static void main(String[] args) {

  2. int [] arr={8,2,7,84,12,1,786,92,34}; // 定义原数组
  3. Arrays.sort(arr); // 对数组元素排序
  4. System.out.print(Arrays.toString(arr)); // 打印数组

  5. }

执行结果:



  1. [1, 2, 7, 8, 12, 34, 84, 92, 786]

copyOf 方法和 copyOfRange 方法详细介绍

copyOf 方法和 copyOfRange 方法都用于复制数组,其中 copyOfRange 方法需要指定起始位置。
示例:



  1. public static void main(String[] args) {

  2. int [] arr={8,2,7,84,12,1,786,92,34}; // 定义原数组
  3. int[] ints = Arrays.copyOf(arr, 4);// 复制数组,第二个参数指定新数组长度
  4. // 复制数组,当指定新数组长度大于原数组时,会填充默认值
  5. int[] ints1=Arrays.copyOf(arr,10);
  6. System.out.println(Arrays.toString(ints)); // 打印数组
  7. System.out.print(Arrays.toString(ints1)); // 打印数组

  8. int[] ints2 = Arrays.copyOfRange(arr, 2, 4); // 复制数组,第二、三个参数指定索引值
  9. // 复制数组,当指定新数组长度大于原数组时,会填充默认值
  10. int[] ints3 =0, 10);
  11. System.out.println(Arrays.toString(ints2)); // 打印数组
  12. System.out.print(Arrays.toString(ints3)); // 打印数组
  13. }

执行结果:



  1. [8, 2, 7, 84]
  2. [8, 2, 7, 84, 12, 1, 786, 92, 34, 0]
  3. [7, 84]
  4. [8, 2, 7, 84, 12, 1, 786, 92, 34, 0]

binarySearch 方法

binarySearch 方法用于查找指定元素索引值。因为该方法使用的是二分法查找,所以在调用该方法之前,必须先调用 sort() 方法进行排序,如果数组没有排序,那么结果是不确定的。

示例:



  1. public static void main(String[] args) {

  2. int [] arr={8,6,84,12,3,786,7,34}; // 定义原数组
  3. int i = Arrays.binarySearch(arr, 7); // 未对数组排序,直接查找元素
  4. System.out.println(i); // 打印索引值

  5. Arrays.sort(arr); // 对原数组排序
  6. System.out.println(Arrays.toString(arr)); // 打印排序后的数组

  7. int x = Arrays.binarySearch(arr, -2); // 排序后查找数组中不存在的元素,不存在则会输出-1
  8. int y = Arrays.binarySearch(arr, 7); // 排序后查找数组中存在的元素
  9. System.out.println(x); // 打印索引值
  10. System.out.print(y); // 打印索引值

  11. }

执行结果:



  1. -3
  2. [3, 6, 7, 8, 12, 34, 84, 786]
  3. -1
  4. 2

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,接收控制台数据创建数组,并替换数组中部分数据,具体要求如下:

  • 接收给定的一行整数(如:12 56 566 452 63 656 356 26 256 256 85876 575 45 %。其中第一个数代表数组长度,其余数为数组元素,最后的 % 用于判断终止控制台输入,中间用空格分隔);
  • 把给定数据创建数组,并替换部分元素,比如有数组[2,5,6,7,8,45,56,45],把它替换成[18,5,6,7,18,45,56,45],即每隔3 个元素替换 1 个元素的值为 18,第 1 个元素为初始替换值;
  • 输出替换后的数组。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

例:
测试输入:



  1. 12 56 566 452 63 656 356 26 256 256 85876 575 45 %

预期输出:



  1. [18, 566, 452, 63, 18, 356, 26, 256, 18, 85876, 575, 45]

开始你的任务吧,祝你成功!

import java.util.Arrays;
import java.util.Scanner;

public class ArrTest {
    public static void main(String[] args) {
        // 请在Begin-End间编写完整代码
        /********** Begin **********/
        // 第一步:从控制台获取输入值(当输入值为%时,终止获取),并给数组赋值
       Scanner sc = new Scanner(System.in);
       int n = sc.nextInt();
       int arr[] = new int [n];
       for(int i = 0; i < n; i++){
           arr[i] = sc.nextInt();
       }
        // 第二步:替换数组
       for(int j = 0; j <= n - 1; j += 4){  //一定要j小于等于n-1,这样才能不漏掉n为奇数时最后一位的替换
           Arrays.fill(arr,j,j+1,18);
       }
        // 第三步:输出替换后的数组
        System.out.print(Arrays.toString(arr));
        /********** End **********/


    }
}