18

我想在数组中存储用户所需的尽可能多的元素。但是我该怎么做。

如果我要创建一个数组,我必须使用固定大小。每次将新元素添加到数组并且数组变满时,我想将其大小更新为“1”。

我厌倦了各种类型的代码,但没有成功。

如果有人能给我一个关于它的解决方案,那将是非常有帮助的 - 如果可能的话,在代码中。

4

11 回答 11

12

不要使用数组,而是使用java.util.List诸如ArrayList. ArrayList 有一个数组后端,它将值保存在列表中,但数组大小由列表自动处理。

ArrayList<String> list = new ArrayList<String>();
list.add("some string");

list.toArray(new String[list.size()])对于其他元素类型,您还可以使用等将列表转换为数组。

于 2012-09-21T04:39:39.627 回答
8

On a low level you can do it this way:

long[] source = new long[1];
long[] copy = new long[source.length + 1];
System.arraycopy(source, 0, copy, 0, source.length);
source = copy;

Arrays.copyOf() is doing same thing.

于 2018-03-30T05:38:06.160 回答
7

您可以创建一个大小比原始元素大一个元素的临时数组,然后将原始元素复制到临时数组中,并将临时数组分配给新数组。

public void increaseSize() {
   String[] temp = new String[original.length + 1];
   
   for (int i = 0; i < original.length; i++){
      temp[i] = original[i];
   }
   original = temp;
}

您可以通过各种方式更改大小,但同样的想法也适用。

于 2013-10-27T15:55:43.120 回答
4

你不能。您可以创建一个新数组并将项目移动到该数组 - 或者您可以使用 ArrayList。

于 2012-09-21T04:41:30.550 回答
4

通过在类大小中使用copyOf方法将自动/动态增加。在下面的代码大小中,使用String 的大小进行操作后增加到.java.util.ArraysString[]array0Arrays.copyOfarray4

package com.google.service;

import java.util.Arrays;

public class StringArrayAutoIncrement {
    public static void main(String[] args) {
        String[] data = new String[] { "a", "b", "c", "d", "e" };
        String[] array = new String[0];// Initializing array with zero
        int incrementLength = 1;
        for (int i = 0; i < data.length; i++) {
            array = Arrays.copyOf(data, i + incrementLength);// incrementing array by +1
        }
        /**
         * values of array after increment
         */
        for (String value : array) {
            System.out.println(value);
        }
    }
}

输出:

a
b
c
d
e
于 2016-06-10T12:21:31.603 回答
1

https://www.java2novice.com/java-arrays/array-copy/

int[] myArr = {2,4,2,4,5,6,3};
System.out.println("Array size before copy: "+myArr.length);
int[] newArr = Arrays.copyOf(myArr, 10);
System.out.println("New array size after copying: "+newArr.length);

你也可以做 myArr = Arrays.copyOf(myArr, 10);

在这种情况下,myArr = Arrays.copyOf(myArr, myAry.length+1);

于 2021-01-29T03:56:31.707 回答
0

你可以使用数组列表

这是字符串数组列表的示例

'导入 java.io.BufferedReader; 导入 java.io.IOException;导入 java.io.InputStreamReader;导入 java.util.ArrayList;

公共课 Ex01 {

public static void main(String[] args) throws IOException { 

    BufferedReader userInput = new BufferedReader 
        (new InputStreamReader(System.in));

    ArrayList<String> myArr = new ArrayList<String>();
    myArr.add("Italian Riviera");
    myArr.add("Jersey Shore");
    myArr.add("Puerto Rico");
    myArr.add("Los Cabos Corridor");
    myArr.add("Lubmin");
    myArr.add("Coney Island");
    myArr.add("Karlovy Vary");
    myArr.add("Bourbon-l'Archambault");
    myArr.add("Walt Disney World Resort");
    myArr.add("Barbados");

    System.out.println("Stupid Vacation Resort Adviser");
    System.out.println("Enter your name:");
    String name = userInput.readLine();
    Integer nameLength = name.length();
    if (nameLength == 0) 
    { 
        System.out.println("empty name entered");
        return;
    } 

    Integer vacationIndex = nameLength % myArr.size();

    System.out.println("\nYour name is "+name+", its length is " + 
                    nameLength + " characters,\n" +
                    "that's why we suggest you to go to " 
                    + myArr.get(vacationIndex));
} 

}'

同样,您可以为整数、blooean 和各种数据类型创建数组

有关更多详细信息,您可以看到这个

http://www.anyexample.com/programming/java/java_arraylist_example.xml

于 2012-09-21T04:40:57.213 回答
0

创建列表对象,添加元素并使用 list.toArray(new String[list.size()]) 将该列表对象转换为数组

于 2012-10-11T06:16:52.343 回答
0

你可以这样做

import java.util.Scanner;

class Add
{
  public static void main(String[] args)
  {
     Scanner obj=new Scanner(System.in);
     char ans='y';
     int count=0;
     while(ans!='N'||ans!='n')
     {
       int initial_size=5; 
       int arr[]=new int [initial_size];
       arr[0]=1;
       arr[1]=2;
       arr[2]=3;
       arr[3]=4;
       arr[4]=5;

       if(count>0)
       {
           System.out.print("enter the element u want to add in array: ");
           arr[initial_size-1]=obj.nextInt();
       }
       System.out.print("Do u want to add element in array?");
       ans=obj.next().charAt(0);
       if(ans=='y'||ans=='Y')
       {
         initial_size++;
         count++;
       }             
    }   
  }

}
于 2020-04-25T20:48:53.010 回答
-2
public class IncreaseArraySize {
 public static void main(String[] args) {
    int arr[] = new int[5];
      for (int i = 0; i < arr.length; i++) {
            arr[i] = 5;
      }
      for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
      }
       System.out.println(" ");
       System.out.println("Before increasing Size of an array :" + arr.length);


        int arr2[] = new int[10];

        arr = arr2;
        arr2 = null;
        for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
    System.out.println("");
    System.out.println("After increasing Size of an array : " + arr.length);
}
}
于 2018-08-01T18:25:33.473 回答
-4

使用 ArrayList。如果您尝试添加到完整的 ArrayList,它的大小会自动增加。

于 2012-09-21T04:38:47.400 回答