访问数组java

时间:2017-05-31 19:01:10

标签: java arrays methods null

for(int i=0;i<dictionary.words.length;i++){
    if(dictionary.words[i].length() <=maxWordlength){
        count++;
        smallWordDictionary[i]=dictionary.words[i]; 
    }
}

我使用此代码将字典数组中的字符串存储到包含字长较短的字符串的数组中。我现在想将这个数组与随机数一起传递给下面的方法(创建一个随机生成的单词):

randomWord(smallWordDictionary, outcome);

当我使用以下方法时:

static void randomWord(String [] array, int number){
     System.out.println(array[number]);
}

控制台打印出null,我不知道为什么。如何让控制台打印出与smallWordDictionary数组中的元素对应的字符串?

1 个答案:

答案 0 :(得分:2)

当长度超过smallWordDictionary[i]时,您不会在maxWordlength中存储任何内容。

数组成员的默认值为null,而不是空字符串。 (引用类型的任何数组成员的默认值为null。)

因此,一些随机索引将指向仍为空的数组成员。

解决方案包括:

  • 构建一个较小的数组,仅包含传递的单词。不会出现空值。
  • 在每个未通过的成员中放置空字符串。
  • 打印时检查为空。

构建较小的数组

最简单的方法是使用List。

List<String> smallWordList = new ArrayList<>;

for(int i=0;i<dictionary.words.length;i++){
    if(dictionary.words[i].length() <=maxWordlength){
        count++;
        smallWordList.add( dictionary.words[i] ); 
    }
}

smallWordDictionary = smallWordList.toArray( new String[] );

请注意,countsmallerWords.size()smallerWordDictionary.length相同。

在每个未通过的成员中放置空字符串

for(int i=0;i<dictionary.words.length;i++){
    if(dictionary.words[i].length() <=maxWordlength){
        count++;
        smallWordDictionary[i]=dictionary.words[i]; 
    }
    else {
        smallWordDictionary[i]=""; 
    }
}

打印时检查为空

static void randomWord(String [] array, int number){
    String member = array[number];
    System.out.println( (null == member) ? "" : member);
}