为了账号安全,请及时绑定邮箱和手机立即绑定

采用整型数组、整型索引和整型值的方法

采用整型数组、整型索引和整型值的方法

catspeake 2022-09-14 10:39:35
因此,对于像我这样的初学者来说,这个问题有点高级,这就是为什么我希望你能忽略我的错误。我们需要创建一个采用数组的方法,一个我想要放在数组中的值以及数组中的索引值(空格)。因为我的老师对她想要的东西并不具体,所以她没有具体说明数组必须是空的还是满的,这是本练习中最让我困惑的地方。静态方法必须命名为:addAtIndex( int [] a, int value, int index),然后执行以下操作:如果数组中的最后一个空格为0或空,并且我想在其中一个已经占用的空间中放置一个新的整数值,则需要将每个元素向右移动并保持该空间自由,以便能够执行此操作。如果最后一个空间已经被整数值占用,我需要“调整”数组的大小并腾出更多空间,以便我可以继续输入更多的整数值。我知道你不能调整数组的大小,更不能保持所有元素的完整性,所以我需要创建一个更大的数组来做到这一点。我用Java编程还不到两个月,所以我发现这很困难。我已经能够创建一个空数组,并且我已经在数组中使用给定的参数输入了不同的数值。所有这些都是在公共静态空白主而不是方法中完成的。我似乎无法在方法中执行此操作,特别是我不知道如何将数组中的所有内容都向右移动。import java.util.Arrays;import java.util.Scanner;public class Array{  public static void main (String args []){     Scanner input = new Scanner(System.in);     int [] array   = new int[10];    for (int x = 0; x <= 9; x++){     int index = input.nextInt();     int value    = (int)(Math.random()*50);      //move elements below insertion point.    for (int i = array.length-1; i > index; i--){        array[i] = array[i-1];       }       //insert new value        array[index] = value;      }      System.out.println(Arrays.toString(array));   }}当然,这与老师希望我做的事情相去甚远。我在这里所做的只是创建一个数组,在我选择的索引中输入随机整数并将其打印出来。我需要一些帮助。
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这就是我以最简约的方式做到这一点的方式。

你可能需要调整,因为我没有花那么多时间在它上面。

但是,它应该给你一个很大的推动力。


请记住,数组不能具有空值。所以我把一个“空”值设为零。

关注评论!int[]


static int[] addAtIndex(

        final int[] array,

        final int value,

        final int index) {

    if (array == null || array.length == 0) {

        // We cannot do anything.

        // Simply return to the caller

        return array;

    }


    // This is the array reference holder

    int[] localArray = array;


    // Get the last element of the array

    final int last = localArray[localArray.length - 1];


    // Is the last element 0? Remember an int array cannot contain nulls

    if (last == 0) {

        if (array[index] != 0) {

            // We need to shift everything to the right

            // to give space to the new element

            shiftRight(localArray, index);

        }

    } else {

        // Create a bigger array of length = actualLength + 1

        // and assign it to the reference holder

        localArray = new int[array.length + 1];


        // Copy the array elements to the new array, leaving a space

        // for the new element

        copyArrayAndLeaveSpace(index, array, localArray);

    }


    // Assign the new value

    localArray[index] = value;


    // Return the modified array reference

    return localArray;

}


static void shiftRight(

        final int[] array,

        final int index) {

    System.arraycopy(array, index, array, index + 1, array.length - index - 1);

}


static void copyArrayAndLeaveSpace(

        final int index,

        final int[] array,

        final int[] newArray) {

    System.arraycopy(array, 0, newArray, 0, index);

    System.arraycopy(array, index, newArray, index + 1, array.length - index);

}

用法


final int[] nums = {1, 2, 3, 4, 5, 6, 8, 9, 0};

final int[] result = addAtIndex(nums, 7, 4);

输出:[1, 2, 3, 4, 7, 5, 6, 8, 9]


final int[] nums = {1, 2, 3, 4, 5, 6, 8, 9, 1};

final int[] result = addAtIndex(nums, 7, 4);

输出:[1, 2, 3, 4, 7, 5, 6, 8, 9, 1]


查看完整回答
反对 回复 2022-09-14
  • 1 回答
  • 0 关注
  • 102 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信