有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解决了在运行时分配数组的问题

我在运行时分配数组时遇到问题,我的意思是

Scanner Scan = new Scanner(System.in);
int size;
int[] myarr = new int[size];
size = Scan.nextInt();

这里的问题是数组大小没有任何更新

线索:这是我正在处理的一个类的简化版本,其中数组的大小作为参数传递给构造函数,我不能在主函数中声明数组。数组需要保留该类的属性


共 (4) 个答案

  1. # 1 楼答案

    如果要频繁调整字段大小,则很可能不希望使用数组,因为它无法调整大小。如上面的一条评论所述,您可以使用ArrayList。然而,它仍然是一个List,在内部是一个数组:即使您不必手动调整它的大小,JVM也会在内部进行调整-这可能会导致不良的运行时行为(仍然假设调整大小是您的首要任务)

    如果经常调整List的大小,您可能需要查看更动态的结构,例如LinkedList

    然而,这个决定总是基于你将如何使用你的List以及你的主要目标是什么

  2. # 2 楼答案

     Scanner Scan = new Scanner(System.in);
    int size= Scan.nextInt();
    int[] myarr = new int[size];
    

    您在实例化数组后定义了大小

  3. # 3 楼答案

    改变这个

    Scanner Scan = new Scanner(System.in);
    int size;
    int[] myarr = new int[size];
    size = Scan.nextInt();
    

    Scanner scan = new Scanner(System.in);//variables in java starts with lower-case by convention
    int size =scan.nextInt();
    int[] myarr = new int[size];
    

    请注意,数组的大小是固定的,如果不创建新数组,则无法在运行时动态更改大小

  4. # 4 楼答案

    现在你知道了

    int[] myarr = new int[size];
    

    变量size已声明,但未初始化。您应该在使用它之前初始化它:

    Scanner Scan = new Scanner(System.in);
    int size = Scan.nextInt();
    int[] myarr = new int[size];
    

    注意:

    • 创建数组myarr后,无法更改其大小。如果要更改大小,可以创建一个具有所需大小的新数组,或者使用另一种结构,如ArrayList