按顺序从列表中创建随机单词

时间:2014-11-12 23:07:16

标签: java random

我尝试创建一个程序,它将按特定顺序生成随机的6个字符长的单词,意思是1,3和第五个位置的音阶以及2,4,6的辅音。我试图做的是:

import java.util.*; 
public class GenerateWords {

static String[] consonant = {"q","w","r","t","p","s","d","f"
                                ,"g","h","j","k","l","z","x",
                                          "c","v","b","n","m"}; //0-19
static String[] vovel = {"a","e","y","u","i","o"};//0-5

public static void main(String[] args) {
    static String st = new String(" ");
    static int x=0;
    static int y=0;
    static String word;
    static int generator;

    public static void main(String[] args) {

        for(int i=0;i<3;)
        {
            Random generator = new Random();
            generator = generator%19;   
            word = StringBuffer(st).insert(x, consonant[generator]).toString();
            x++;
            Random generatora = new Random();
            generatora = generatora%5;
            word = StringBuffer(st).insert(y, vovel[generator1]).toString();
            y++;
        }
        System.out.println(word); 
    }
}

我昨天刚开始学习java,我很丢失。感谢您对代码的所有帮助。

2 个答案:

答案 0 :(得分:0)

Random类提供随机生成器,而不是随机数: 要生成一个随机数,您可以这样称呼:

Random generator = new Random();  
int randomNumber = generator.nextInt(20);  // this will generate an integer between 0 and 20

此外,您可以重复使用相同的generator来生成其他数字。所以你不需要Random generatora实例。

正如@Andy已经指出你的代码中还有一些问题。但是让我们来看看:

您已准备好String word存储结果的位置。由于它只是 一个字符串,你可能想要用一个空值(非空)来实例化它,所以你不会得到一些令人惊讶的NullPointerException

String word = "";

正如我之前所说,你只需要一个Random generator实例,所以让我们在 for循环之前移动,否则会创建3个实例:

Random generator = new Random();
for (int i = 0; i < 3; i++) {

循环很好。你只需要数到3.但是i增加..你实际上需要增加它。否则你的循环条件永远不会满足,它会无限循环。

此方法将返回0max之间的随机整数。因此,您只需要定义max

generator.nextInt( max );

现在,你有19个辅音和5个元音。但无论数组中有多少个字母,都可以通过调用

来获取数组大小
consonant.length;

这样你就不必“知道”阵列中有多少个字母(想象有一天你想换成另一个字母)

我想现在你可以看到我要去哪里以及如何从具有固定长度的数组中获取随机项:)

但是把它放在哪里?你对StringBuffer的看法令人钦佩,但对我来说太复杂了。你生成的一个单词会是这样的,对吧? :

dawuci

一些辅音,一个元音,辅音,元音......所以基本上就像有一个空单词,一个一个地添加一个辅音,一个元音,一个辅音......

您已经拥有 String word,并且您拥有了for循环。你不需要更多,只需要letter + letter + letter + letter + letter + letter就可以得到6个字母。

答案 1 :(得分:0)

这里有很多问题。试试这个,看看你是否可以从这里开始工作。

static String[] consonant = {"q","w","r","t","p","s","d","f"
        ,"g","h","j","k","l","z","x",
        "c","v","b","n","m"}; //0-19
static String[] vovel = {"a","e","y","u","i","o"};//0-5


for(int i=0;i<3;)
{
    Random generator = new Random();
    int random1 = generator.nextInt(19);
    word = new StringBuffer(st).insert(x, consonant[random1]).toString();
    x++;
    Random generatora = new Random();
    int random2 = generatora.nextInt(5);
    word = new StringBuffer(st).insert(y, vovel[random2]).toString();
    y++;
}
System.out.println(word);

}