如何更改从main使用的数组

问题描述 投票:0回答:3

我正在尝试初始化数组,然后与另一个类(arrayCreation)一起更改数组的大小和元素。但是,我不知道如何完成此操作,因为我得到的只是一个元素,因为它的大小已初始化且为0(默认情况下为0)。

public class sort {
    public static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int size = 1;
        int[] array = new int[size];
        initialMenuSelector(array,size);
    }

    public static void initialMenuRender(){
        System.out.println("Main menu:");
        System.out.println("1. Work with numbers");
        System.out.println("2. Work with words");
        System.out.println("3. Exit");
    }

    public static void initialMenuSelector(int[] array,int size){
        initialMenuRender();
        System.out.println("");
        System.out.print("Choose an option: ");
        int selector = scanner.nextInt();

        switch(selector){
            case 3:
                System.out.println("");
                System.out.println("Exiting...");
                System.exit(0);
                break;
            case 2:
                System.out.println("");
                System.out.println("Work with words");
                break;
            case 1:
                System.out.println("");
                System.out.println("Work with numbers");
                arrayCreation.arrayNumberCreation(array,size);
                arrayRender(array);
                break;
            default:
                System.out.println("");
                System.out.println("Invalid selection");
                initialMenuSelector(array,size);
        }
    }
}
java arrays switch-statement
3个回答
0
投票

您需要将创建数组时的返回值分配回初始数组。当您将变量传递给java中的方法时,实际上会将变量复制到新的本地值。因此,在更改数组后,您必须从函数中将其返回并进行分配。所以应该是这样。

array = arrayCreation.arrayNumberCreation(array,size);

数组大小也无法更改,因此您必须创建一个新的数组并用旧的替换。不知道您是否在创建数组时这样做。


0
投票

在Java中,数组不是动态的。这意味着您要更改大小以创建具有新大小的新数组,然后复制旧数组上的每个元素。或者,如果您不想手动调整数组的大小,则可以使用ArrayList


0
投票

创建一个要增加大小的新数组。例如,你有

old_array = new array[10];

现在您要增加此数组的大小将旧值复制到新值,然后用新值替换旧值

new_array = new Array[20];
copy(new_array,old_array);
old_array = new_array

就这么简单

© www.soinside.com 2019 - 2024. All rights reserved.