我想要做的是初始化一个字符串数组,然后用不同的字符串填充每个空格,如下所示:
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
我知道我的代码可能更短,但我试图找出问题...
答案 0 :(得分: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);
}
答案 1 :(得分:1)
U没有初始化年份变量,同样,年份数组中没有项目
String[] Year = new String[50]; // Initlaize adn add Some content
答案 2 :(得分:0)
您需要在具有所需大小的数组上执行新操作
String[] Year = new String[desired size];
如果不这样做,就不会在内存中创建数组,因此你会遇到异常。
答案 3 :(得分:0)
您尚未初始化Year
:
String[] years = new String[SIZE];
或
String[] years;
years = new String[SIZE];
或
String[] years = {"Hello","World","Again"};
此外,使用正确的Java命名约定。
答案 4 :(得分:0)
String[] Year;
仅声明具有名称年份的数组引用,您需要在使用之前声明具有所需长度的数组,因此必须将其设为
String[] years = new String[size];
其中'size'是您要定义的数组的长度。另外String[] year=null
只会创建一个指向null的引用,这就是你得到NullPointerException的原因。