Java - 打印随机字

cyb*_*b3r 3 java

我的运动有问题.我需要在最小和最大字母之间打印五个随机单词.

这就是我所做的:

package Vjezba;
import acm.program.*;
import acm.util.RandomGenerator;

import java.util.*;

public class String2 extends ConsoleProgram {
public void run () {
    for (int i = 0; i<5; i++){
        String a = randomWord();
        println(a);
    }

}

private String randomWord() {
    int a = rgen.nextInt(MIN_LETTER, MAX_LETTER);
    for (int x=0; x<a; x++){
        String niz = "";
        char c = randomChar();
        niz += 'c';
    }
    return niz;

}



private char randomChar(){
    return (char) rgen.nextInt('a', 'z');
}

private static RandomGenerator rgen = new RandomGenerator();
private static int MIN_LETTER = 3;
private static int MAX_LETTER = 10;
    }
Run Code Online (Sandbox Code Playgroud)

我有返回String的问题.不知道怎么做.

Bri*_*ach 5

你在Stringfor循环中声明你的内心; 每次循环都会得到一个新的(空)字符串.你还要添加字符'c',而不是你的内容char c

String niz = "";
for (int x=0; x<a; x++){
    //String niz = "";
    char c = randomChar();
    niz += c; // c not 'c'
}
Run Code Online (Sandbox Code Playgroud)

虽然在这个微不足道的情况下它并不重要,但String在java中是不可变的 - 它无法改变.每次执行niz += c此操作都会创建一个新字符串.无论何时构建字符串,您都希望使用StringBuilder:

StringBuilder niz = new StringBuilder();
for (int x=0; x<a; x++){
    char c = randomChar();
    niz.append(c);
}
return niz.toString();
Run Code Online (Sandbox Code Playgroud)