【问题标题】:In Java, how do I initialize an array of strings? [duplicate]在 Java 中,如何初始化字符串数组? [复制]
【发布时间】:2013-05-20 12:51:44
【问题描述】:

我要做的是初始化一个字符串数组,然后用不同的字符串填充每个空间,如下所示:

        int year = 1995; //the current year i'm working with

        String[] Year; //Initialize the year string
        String j;


        for(int i=(year-50); i < year; i++)
        {
            j = Integer.toString(i); //Converts the integer to a string
            Year[i] = j; //EXCEPTION OCCURS HERE WHEN I SET 'String[] Year'
                         //equal to 'null'

        }

问题是我无法初始化字符串,因为我收到以下错误: '局部变量 Year 可能尚未初始化'

如果我设置String[] Year = null,那么我可以初始化字符串。但是,如果我这样做,在尝试运行和编译代码时会引发异常:java.lang.NullPointerException

我知道我的代码可能会更短,但我正在尝试找出问题...

【问题讨论】:

  • 谷歌搜索怎么样?

标签: java arrays string initialization


【解决方案1】:

使用此代码:

String[] Year = new String[50]; //Initialize the year string

现在 Java 知道您希望数组有多长,因此可以对其进行初始化。

如果你不告诉 Java 你希望你的数组有多长,它就无法生成数组,因为它不知道数组应该有多长。

另外,如果您想轻松调整它,可以使用final 变量SIZE

此外,您不需要字符串j,因为您只使用它来存储某些结果,然后再将其添加到数组中。

这不会影响您的代码,但正确的 Java 命名约定是变量应该以小写字母开头,因此将 Year 更改为 years

因此,您的代码可以这样改进:

    int year = 1995; //the current year i'm working with
    final int SIZE = 50; //how big

    String[] years = new String[SIZE]; //Initialize the year string

    for(int i=(year-SIZE); i < year; i++) //Note the use of the SIZE variable
    {
        years[i] = Integer.toString(i);
    }

【讨论】:

  • 这是未经测试的,将会失败。代码正在尝试写入years[1945],即使years.length 只是50
【解决方案2】:

你没有初始化年份变量,而且年份数组中没有项目

String[] Year = new String[50]; // Initlaize adn add Some content

【讨论】:

    【解决方案3】:

    你还没有初始化Year

    String[] years = new String[SIZE];  
    

    String[] years;  
    years = new String[SIZE];
    

    String[] years = {"Hello","World","Again"};
    

    另外,使用正确的 java 命名约定。

    【讨论】:

      【解决方案4】:

      你需要在数组上做新的所需大小

      String[] Year = new String[desired size];
      

      如果不这样做,内存中就不会创建数组,因此您会遇到异常。

      【讨论】:

        【解决方案5】:

        String[] Year; 仅声明名称为 year 的数组引用,您需要在使用前声明具有所需长度的数组,因此您必须将其设为

        String[] years = new String[size]; 
        

        其中 'size' 是您要定义的数组的长度。此外,String[] year=null 只会创建一个指向 null 的引用,这就是你得到 NullPointerException 的原因。

        【讨论】:

          猜你喜欢
          • 2013-07-05
          • 2015-07-25
          • 1970-01-01
          • 2017-04-10
          • 2014-12-08
          • 2018-08-23
          • 1970-01-01
          • 1970-01-01
          • 2016-06-27
          相关资源
          最近更新 更多