如何写出随机名称?

时间:2016-04-17 22:36:46

标签: java algorithm random

我的文件中有8个名字,每一行只有一个名字。

我正试图随意写出其中一个名字。我写了一些代码,但我不知道我将如何继续。(我试图解决这个问题而不使用数组,因为我们还没有学习)。 我的清单上有这些名字;

patrica
natascha
lena
sara
rosa
kate
funny
ying

我想用system.out.println随意写出一个名字

这是我的代码:

BufferedReader inputCurrent = new BufferedReader(new FileReader("aText.txt"));

    String str;
    int rowcounter =0;
    int mixNum =0;
    String strMixNum=null;
    while((str = inputCurrent.readLine())!= null){
        rowcounter++; 
        mixNum = rnd.nextInt(rowcounter)+1;
        //strMixNum = ""+strMixNum;

        String str2;
        while((str2 = inputCurrent.readLine())!= null){
            // i dont know what i s shall write here
            System.out.println(str2);
        }
    }

    inputCurrent.close();

2 个答案:

答案 0 :(得分:5)

由于您尚未了解数组或列表,因此您需要预先确定需要的数字,并在到达目的地时停止阅读该文件。

所以,如果你知道你有8个单词,那么你可以这样做:

int wordToGet = rnd.nextInt(8); // returns 0-7
while ((str = inputCurrent.readLine()) != null) {
    if (wordToGet == 0)
        break; // found word
    wordToGet--;
}
System.out.println(str); // prints null if file didn't have enough words

一旦你学会了Java的技巧,你可以折叠那些代码,虽然它对读者来说变得不那么清楚,所以你可能不应该这样做:

int wordToGet = rnd.nextInt(8);
while ((str = inputCurrent.readLine()) != null && wordToGet-- > 0);
System.out.println(str);

答案 1 :(得分:2)

您可以简单地阅读所有名称,将它们存储在列表中,然后随机选择一个索引:

List<String> names = Files.readAllLines(Paths.get("aText.txt"));
// pick a name randomly:
int randomIndex = new Random().nextInt(names.size());
String randomName = names.get(randomIndex);
System.out.println(randomName);