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

因此,对于像我这样的初学者来说,这个问题有点高级,这就是为什么我希望你能忽略我的错误。

我们需要创建一个采用数组的方法,一个我想要放在数组中的值以及数组中的索引值(空格)。

因为我的老师对她想要的东西并不具体,所以她没有具体说明数组必须是空的还是满的,这是本练习中最让我困惑的地方。

静态方法必须命名为:

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));

   }

}

当然,这与老师希望我做的事情相去甚远。我在这里所做的只是创建一个数组,在我选择的索引中输入随机整数并将其打印出来。我需要一些帮助。


catspeake
浏览 103回答 1
1回答

阿波罗的战车

这就是我以最简约的方式做到这一点的方式。你可能需要调整,因为我没有花那么多时间在它上面。但是,它应该给你一个很大的推动力。请记住,数组不能具有空值。所以我把一个“空”值设为零。关注评论!int[]static int[] addAtIndex(&nbsp; &nbsp; &nbsp; &nbsp; final int[] array,&nbsp; &nbsp; &nbsp; &nbsp; final int value,&nbsp; &nbsp; &nbsp; &nbsp; final int index) {&nbsp; &nbsp; if (array == null || array.length == 0) {&nbsp; &nbsp; &nbsp; &nbsp; // We cannot do anything.&nbsp; &nbsp; &nbsp; &nbsp; // Simply return to the caller&nbsp; &nbsp; &nbsp; &nbsp; return array;&nbsp; &nbsp; }&nbsp; &nbsp; // This is the array reference holder&nbsp; &nbsp; int[] localArray = array;&nbsp; &nbsp; // Get the last element of the array&nbsp; &nbsp; final int last = localArray[localArray.length - 1];&nbsp; &nbsp; // Is the last element 0? Remember an int array cannot contain nulls&nbsp; &nbsp; if (last == 0) {&nbsp; &nbsp; &nbsp; &nbsp; if (array[index] != 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // We need to shift everything to the right&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // to give space to the new element&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; shiftRight(localArray, index);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; // Create a bigger array of length = actualLength + 1&nbsp; &nbsp; &nbsp; &nbsp; // and assign it to the reference holder&nbsp; &nbsp; &nbsp; &nbsp; localArray = new int[array.length + 1];&nbsp; &nbsp; &nbsp; &nbsp; // Copy the array elements to the new array, leaving a space&nbsp; &nbsp; &nbsp; &nbsp; // for the new element&nbsp; &nbsp; &nbsp; &nbsp; copyArrayAndLeaveSpace(index, array, localArray);&nbsp; &nbsp; }&nbsp; &nbsp; // Assign the new value&nbsp; &nbsp; localArray[index] = value;&nbsp; &nbsp; // Return the modified array reference&nbsp; &nbsp; return localArray;}static void shiftRight(&nbsp; &nbsp; &nbsp; &nbsp; final int[] array,&nbsp; &nbsp; &nbsp; &nbsp; final int index) {&nbsp; &nbsp; System.arraycopy(array, index, array, index + 1, array.length - index - 1);}static void copyArrayAndLeaveSpace(&nbsp; &nbsp; &nbsp; &nbsp; final int index,&nbsp; &nbsp; &nbsp; &nbsp; final int[] array,&nbsp; &nbsp; &nbsp; &nbsp; final int[] newArray) {&nbsp; &nbsp; System.arraycopy(array, 0, newArray, 0, index);&nbsp; &nbsp; 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]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java