随机选择字符串

时间:2015-06-11 13:09:46

标签: java string random

我有一个文本文件,我试图将每一行转换为ArrayList。然后我必须从这个text.file中取一个随机行并将其显示在新的JOptionPane上。

我试图在for循环中实现它,但它总是只出现在我的text.file的第一行。非常感谢,这是我的代码。

public void actionPerformed(ActionEvent e) {

    ArrayList<String> allQuestions = new ArrayList<String>();
    ArrayList<String> allRandomSelectedQuestions = new ArrayList<String>();
    File file = new File("C:/Users/User/Documents/NetBeansProjects/SummerExamProject/src/Questions2.txt");
    int numberOfRandomQuestions = 16;

    try {
        //Read line by line from the file  
        Scanner scan = new Scanner(file);

        while (scan.hasNextLine()) {

            String line = scan.nextLine();

            //  System.out.println(line);
            JOptionPane.showMessageDialog(null, line.replace("/", "\n"));

            scan.close();

            allQuestions.add(line); 
        }
    } 
    catch (FileNotFoundException ex) {
        ex.printStackTrace();
    }

    for(int i = 0; i < numberOfRandomQuestions; i++){
        Random randNum = new Random();

        int randQuestionIndex = randNum.nextInt(numberOfRandomQuestions);   
        String randomQuestion = allQuestions.get(randQuestionIndex); 
        allRandomSelectedQuestions.add(randomQuestion);
    }
}

4 个答案:

答案 0 :(得分:1)

这一行...

scan.close();

在你的while循环中,所以它在第一次循环时读取一行后关闭文件。

将它移到循环之后(即在关闭的culry-brace之后)应该修复它。

答案 1 :(得分:1)

问题在于:scan.close();。您正在使用用于阅读的同一循环关闭扫描仪。将它移到循环体外可以解决问题。

答案 2 :(得分:1)

在while循环后调用close方法。发生了什么,你在第一行后关闭。所以while循环只停留一次。

var price10 = $(".new").find("[price='10']");
var price20 = $(".new").find("[price='20']");
var price30 = $(".new").find("[price='30']");
var price40 = $(".new").find("[price='40']");
var price50 = $(".new").find("[price='50']");

答案 3 :(得分:0)

试试这个。希望它有所帮助。

declare -a globalDir
#------------------------------#
#Code that fills globalDir array
#-----------------------------#

echo ${#globalDir[@]} #print globalDir lenght and I get 2


for element in $globalDir
do

    echo "$element"

done