我有一个文本文件,我试图将每一行转换为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);
}
}
答案 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