【问题标题】:How to create a String type array without declaring the range in java?java - 如何在不声明Java范围的情况下创建String类型数组?
【发布时间】:2013-07-01 15:57:57
【问题描述】:

在 java 中,我通过这一行创建了一个字符串类型数组 String [] ars = {}; 这一行没有显示错误。但是当我试图通过这一行 ars[i++] = g; 插入一个字符串时,我等于 0,它给了我 java.lang.ArrayIndexOutOfBoundsException: 0 为什么?

【问题讨论】:

  • 数组大小是固定的。您应该选择适合您需要的Java Collection 类。我认为 ArrayList 可能是满足您需求的 Collection 之一。

标签: java arrays string exception


【解决方案1】:

数组是固定大小的,创建后不能添加元素。由于您的数组的大小为 0,因此在索引 0 处访问它是超出范围的。

如果您想在创建集合后将元素添加到您的Strings 集合中,那么您可能需要考虑使用诸如java.util.ArrayList<String> 之类的集合。你可以这样使用它:

//import java.util.*;
ArrayList<String> ars = new ArrayList<String>();
ars.add(g);

【讨论】:

  • ars.size();会返回什么类型的数据?字符串还是整数? @Jashaszun
  • @TusharTushKhush 看到size 方法返回ArrayList 的大小,它返回一个Integer。返回 String 没有意义。
【解决方案2】:

数组的大小是固定的。如果索引等于或超过数组大小,则无法添加元素。即只能使用 0array.length - 1 的值。在这里,您尝试将索引 0 处的值分配给一个大小为零的数组,从而产生 AIOOBE

使用诸如ArrayList 之类的集合,如果需要,可以在添加元素时扩展其容量。

【讨论】:

    【解决方案3】:

    在 java 中,你需要指定你想要的数组有多大,如果不创建一个新数组,你就不能改变这个大小。

    最好的方法是使用ArrayListList 的其他实现。

    【讨论】:

      【解决方案4】:

      不要使用数组。使用 ArrayList。 Java中的数组在分配时是固定长度的,永远不能增加。您的代码使 ars 引用长度为 0 的数组,因此除非您将其指向一个新数组,否则它永远不会更大。这就是 ArrayList 类的目的——成为一个可以随时间增长/缩小的可变长度数组。

      【讨论】:

        【解决方案5】:

        出现此错误会导致 [0] 中没有任何内容,{} 中没有任何内容;

        这样,你就有了:字符串 a = {"zero", first},其中 a[0] = 零,a[1] = first

        你也可以试试,这样;

        声明一个 int tam = 0;

        并创建你的数组:String a = new String[tam];

        所以在你可以改变数组的长度之后, 改变变量 tam;

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-10-09
          • 2015-02-20
          • 2017-03-30
          • 1970-01-01
          • 2015-10-28
          • 1970-01-01
          • 2014-04-05
          相关资源
          最近更新 更多