2013-05-20 93 views
-1

我想要做的是初始化字符串数组,然后填充每个空间使用不同的字符串,像这样:在Java中,我如何初始化一个字符串数组?

 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

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

+1

如何使用Google搜索? – BobTheBuilder

回答

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); 
    } 
+0

这是未经测试的,会失败。尽管'years.length'只有'50',代码试图写入'years [1945]'。 – Alderath

0

你需要做新的阵列上与所需的大小

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

没有这样做,也没有在创建的数组记忆,因此你击中了例外。

0

您还没有初始化Year

String[] years = new String[SIZE]; 

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

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

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

1

ü没;吨用来初始化年Varible,也没有年度阵列内的项目

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

String[] Year;只声明了名一年数组引用你需要声明与之前所需要的长度数组使用它,所以你必须使它作为

String[] years = new String[size]; 

其中'大小'是您要定义的数组的长度。另外String[] year=null只会创建一个指向null的引用,这就是为什么你会得到NullPointerException。