将项目插入无序数组

时间:2016-05-07 05:39:23

标签: java arrays

我试图在无序数组中插入一个数字,但它有一些逻辑错误。用过的代码是,

    int NoOfItems = 5 ;
    int MyArray[] = {1,6,3,9,5};
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a Number:");
    int m_Number = input.nextInt(); 
    if (NoOfItems < MyArray.length) {
        MyArray[NoOfItems] = m_Number;
        NoOfItems = NoOfItems + 1;
    }
    System.out.println(Arrays.toString(MyArray));

请帮我解决这个问题。

5 个答案:

答案 0 :(得分:1)

MyArray数组的长度为5,因此它可以保存索引0-4中的对象。您正在尝试在索引5中插入一个对象,该对象将为您提供ArrayIndexOutOfBounds异常。请注意,Java中的数组具有不可变的大小。

您需要创建一个大小为6的新数组,并将旧数组的内容复制到其中,然后添加第5个索引。否则,您可以使用ArrayList

答案 1 :(得分:0)

Java中的数组是固定大小的。它们的大小在创建后无法修改。如果需要动态长度数组,请考虑使用java.util.ArrayList

online java IDE

中的示例

答案 2 :(得分:0)

数组的大小在java中是固定的,你可以做的最好的事情就是使用ArrayList。

但是如果你想用数组来实现它,那么它是如何工作的:

int myArray[] = {1, 6, 3, 9, 5};
Scanner input = new Scanner(System.in);
System.out.println("Enter a Number:");
int mNumber = input.nextInt();

// Allocate new array
int newArray[] = new int[myArray.length + 1];
// Copy contents
System.arraycopy(myArray, 0, newArray, 0, myArray.length);
// Put a new number into last cell in array
newArray[newArray.length - 1] = mNumber;

myArray = newArray;

System.out.println(Arrays.toString(myArray));

答案 3 :(得分:0)

回答你的问题:

  

它有一些逻辑错误

if条件中的代码永远不会作为

执行
  

&#34; NoOfItems&#34;是5和&#34; MyArray.length&#34;返回4.

     

条件是5 <4

永远不会成为现实,因此您永远不会在数组中添加元素。如果你纠正了你的情况并尝试在数组中添加一个元素,你就会得到一个&#34; java.lang.ArrayIndexOutOfBoundsException&#34;。

和其他答案一样,如果你想在java中使用一个可重新调整大小的数组,请使用arrayList。数组在java中具有固定长度。

答案 4 :(得分:0)

您的数组在创建时具有修复值。您只需更改值即可添加新闻。

你应该这样做:

ArrayList<Integer> MyArray = new ArrayList<Integer>(); //create a new list
    MyArray.add(1); // put 1 at index 0.
    MyArray.add(6); // put 6 at index 1.
    MyArray.add(3); // ...
    MyArray.add(9); // ...
    MyArray.add(5); // ...
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a Number:");
    int m_Number = input.nextInt(); 
    MyArray.add(m_Number); //put the entered number at the end of MyArray

    System.out.println(MyArray);

Tadaa!