0

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

        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

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

4

5 回答 5

1

使用此代码:

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

现在 Java 知道你希望数组有多长,所以它可以初始化它。

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

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

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

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

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

    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);
    }
于 2013-05-20T12:52:42.767 回答
1

你还没有初始化Year

String[] years = new String[SIZE];  

或者

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

或者

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

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

于 2013-05-20T12:53:25.227 回答
1

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

String[] Year = new String[50]; // Initlaize adn add Some content
于 2013-05-20T12:54:20.060 回答
0

您需要在具有所需大小的阵列上执行新操作

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

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

于 2013-05-20T12:53:09.193 回答
0

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

String[] years = new String[size]; 

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

于 2013-05-20T13:07:35.413 回答