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
数组中其元素相对应的字符串?
当长度大于 maxWordlength
时,您不会在smallWordDictionary[i]
中存储任何内容。
您的数组成员的默认值是null
,而不是空字符串。(参考类型的任何数组成员的默认值是null
。(
因此,您的某些随机索引将指向仍然为空的数组成员。
解决方案包括:
- 构建一个较小的数组,仅包括传递的单词。不会出现零。
- 将空字符串放在每个不通过的成员中。
- 打印时检查零。
构建一个较小的数组
最简单的方法是列表。
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[] );
请注意,count
是smallerWords.size()
或smallerWordDictionary.length
的SAME。
将空字符串放在每个不通过的成员中
for(int i=0;i<dictionary.words.length;i++){
if(dictionary.words[i].length() <=maxWordlength){
count++;
smallWordDictionary[i]=dictionary.words[i];
}
else {
smallWordDictionary[i]="";
}
}
打印时检查null
static void randomWord(String [] array, int number){
String member = array[number];
System.out.println( (null == member) ? "" : member);
}