我目前有一个计算机科学课程的项目,要求我从文本文件中选择一个随机单词。到目前为止,我已经将文本文件放入一个数组中,目前可以打印整个文件,但对于我的生活,我无法想出从中获取一个随机的单词..?我知道代码很乱,没有组织,抱歉。提前致谢! < 3
package moviemain1;
/**
*
* @author rogerseva
*/
import java.io.*;
import java.util.*;
public class MovieMain1 {
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(new File("movies.txt"));
int numOfMovies = 0;
int randomMovie = 0;
String movies = "";
String s = scan.nextLine();
args = s.split("");
ArrayList<String> movieList = new ArrayList<String>();
while (scan.hasNextLine()) {
movieList.add(scan.nextLine());
}
while (scan.hasNextLine()) {
String line = scan.nextLine();
movies += (line + "\n");
numOfMovies++;
randomMovie = (int) (Math.random() * numOfMovies);
}
System.out.println(movieList);
}
}
答案 0 :(得分:2)
browser = webdriver.Chrome(r'C:\WebDriver\bin\chromedriver_win32')
使用this获取随机数。然后使用ArrayList的get方法获取随机项。
这是一个小小的演示
ThreadLocalRandom.current().nextInt
从Java 7在所有情况下都更喜欢java.util.concurrent.ThreadLocalRandom
到java.util.Random
- 它向后兼容现有代码,但在内部使用更便宜的操作。 info here
答案 1 :(得分:1)
让我们开始......
ArrayList<String> movieList = new ArrayList<String>();
while (scan.hasNextLine()) {
movieList.add(scan.nextLine());
}
while (scan.hasNextLine()) {
String line = scan.nextLine();
movies += (line + "\n");
numOfMovies++;
randomMovie = (int) (Math.random() * numOfMovies);
}
这没有意义,因为第二个while-loop
将永远不会执行,因为第一个while-loop
的退出条件与第二个相同。
此外,movieList.size()
将返回元素的数量,因此我不理解第二个while-loop
的重点,特别是考虑到你可以将它们组合起来......
while (scan.hasNextLine()) {
String line = scan.nextLine();
movieList.add(line);
movies += (line + "\n");
numOfMovies++;
randomMovie = (int) (Math.random() * numOfMovies);
}
从ArrayList中选择随机字?
在您填写ArrayList
后,您可以完成...
Collections.shuffle(movieList);
List
现已随机化。您可以使用movieList.get(0)
,或者如果要继续从列表中选择随机元素而不获取重复值movieList.remove(0)
。
这当然会使原始列表随机化。如果您想保留原始订单,那么我会使用第二个ArrayList
...
ArrayList<String> randomised = new ArrayList<String>(movieList);
Collections.shuffle(randomised);
答案 2 :(得分:0)
从0生成随机int(可能使用java.util.Random
)到ArrayList的长度(不包括)。然后你可以简单地打印出ArrayList中该索引处的String。
Random r = new Random();
int randIndex = r.nextInt(movieList.size());