使用随机类的多维数组(参差不齐)

我正在执行Java分配,并且尝试生成三个单词(并置在一起)的随机密码,该单词来自一个故事(一个以多维数组(https://imgur.com/kczPu4l)组成的故事(爱丽丝梦游仙境)。

说明:

  1. 页码,段落号和行号是随机选择的。 使用java.util.Random类使用nextInt()方法生成随机数。
  2. 使用split(“”)将字符串从所选行转换为单词数组
  3. 在步骤2中从数组中选择一个随机词。(提示:使用length属性)
  4. 如果一个单词仅由单个字符(例如“ a”)组成,或者该单词包含 换行符('\ n'),请返回步骤1。

这是我到目前为止所做的:

import java.util.Random;

    public class Assign3Q1 {
        public static void main(String[] args) {`
        final String[][][] book = { ......} // check the link above

        Random r=new Random();

        int pageNum = r.nextInt(book.length);
        int paraNum = r.nextInt(book[pageNum].length);
        int lineNum = r.nextInt(book[pageNum][paraNum].length);


    for (int i =0; i<5; i++) { // I did 5 passwords just to be simple. I actually need 10000.
      System.out.print("Password = ");  

    for (int j = 0; j<3; j++) {

        String sentence = book[pageNum][paraNum][lineNum];
        String[] string = sentence.split(" "); // step 3    
        int index = new Random().nextInt(string.length);            
        String randomWord = string[index];

        if (randomWord.equals("a") && randomWord.contains("\n")) {
        }
        else 
            System.out.print(randomWord);

    }
    System.out.println("");

  }

但是,我很难为这3个串联词创造条件。例如,在第5步中说

  1. 当您有三个单词时,将它们连接起来以形成密码,然后 应用以下步骤。您可以使用String类中的compareTo()方法 (但没有HashSet)。不要使用Character类中的任何方法。

a。没有两个词可以完全相同(例如,不允许使用“ theAlicethe”,但 接受“ the”和“ The”)。否则,请返回到步骤1。

b)密码必须为大写字符。如果没有,请返回步骤1。

c)密码必须使用小写字母char。如果没有,请返回步骤1

......更多条件。

问题1:由于每次执行循环时密码都是随机的,如何在我创建的for循环中放置多个条件?我可以按照与第4步相同的方式进行操作,还是有其他方法?

问题2:另一个问题是密码的输出。由于某种原因,每当我运行该程序(上述程序)时,其中一个密码就会在新的一行开始。这是为什么? 例如,第一个密码应该给这个“ I”,但是两个单词放在了下一行。第三个密码相同

Password = gave
this"I
Password = sharply."I"I
Password = advisegave
leave
Password = generallyadviseyou
Password = adviseminute!"sharply.

问题3:基于步骤5的条件,当每个密码的所有条件都满足时,如何使用步骤5的条件创建“失败”的密码生成尝试?

例如:假设满足所有条件的密码之一是“ Shekey; Just,”(请注意:密匙;而Just和She是三个字)。假设随机生成器花了11次密码,因为该密码之前的其他密码必须至少包含一个密码,因此密码没有大写。

运行程序时,输出应与其他条件类似(NewLine和Single来自步骤4)。 (请注意:我假设密码是随机生成的,因此失败尝试的次数可以相同或不相同。实际上,查找带有大写字母的密码可能需要7次,或者查找没有\ n换行符的密码可能需要10次。等。)

 password = Shekey;Just,NewLine = 17    Single = 2     Equal= 4    Upper = 11     Lower = 0
 ...
 ...
raincraft 回答:使用随机类的多维数组(参差不齐)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3169666.html

大家都在问