0

我有一个程序,我不会随机读取 ARRAY 我没有程序错误但是在输出期间我有空值你能给我解决方案吗?

import java.io.FileInputStream;
import java.util.Properties;
import java.util.Random;
import javax.swing.JOptionPane;

public class ReadDB {
    public static void main(String[] args) {

        Properties prob = new Properties();
        String word [] = new String [20] ;
        try{
            prob.load( new FileInputStream("words.txt"));
        }catch(Exception e){
        }
        for(int i=1; i<6; i++){         
            String temp = prob.getProperty(""+i);
            word[i] = temp;
            Random ran = new Random ();

            String Val = word[ran.nextInt(word.length)];

            System.out.println(Val);

        }
    }
}
4

3 回答 3

5

您的数组长度为 20,您只填充 5 个值for(int i=1; i<6; i++){:这解释了空值。

于 2012-11-15T21:40:51.810 回答
2
  1. 您的数组大小为 20,但您的循环只有 5 次迭代。
  2. 您的循环从错误的索引开始(部分相关)
  3. word在实际完成填充数据之前,您正在对数组进行随机轮询:

将其更改为:

for(int i=1; i<6; i++){         
    String temp = prob.getProperty(""+i);
    word[i] = temp;
    Random ran = new Random ();
    String Val = word[ran.nextInt(word.length)];
    System.out.println(Val);
}

至:

for(int i=0; i<20; i++){         
    String temp = prob.getProperty(""+i);
    word[i] = temp;
}

for(int i=0; i<20; i++){
    Random ran = new Random ();
    String Val = word[ran.nextInt(word.length)];
    System.out.println(Val);
}
于 2012-11-15T21:43:57.280 回答
0

您的输出可能为 null,因为prob.getProperty为随机选择的索引的键返回 null,但更可能的问题是随机生成的索引超出了正在填充的 5 个值的范围。

两个建议:

  1. 永远不要忽略异常。最有可能的prob是由于异常而无法加载。相反,打印异常:e.printStackTrace().

  2. 确保加载的预期属性实际上具有填充words数组时假设存在的键 1-5。

于 2012-11-15T21:43:08.203 回答