我在练习时遇到了问题。我需要打印五个随机单词,介于最小和最大字母之间。
这是我所做的:
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;
}
我在返回字符串时遇到问题。不知道该怎么做。
最佳答案
您在 for 循环中声明了 String
;每次循环你都会得到一个新的(空的)字符串。您还添加了字符“c”,而不是 char c
String niz = "";
for (int x=0; x<a; x++){
//String niz = "";
char c = randomChar();
niz += c; // c not 'c'
}
虽然在这种微不足道的情况下它并不重要,但 java 中的 String
是不可变的 - 它无法更改。每次执行 niz += c
时,它都会创建一个新字符串。任何时候你想要使用 StringBuilder
构建一个字符串:
StringBuilder niz = new StringBuilder();
for (int x=0; x<a; x++){
char c = randomChar();
niz.append(c);
}
return niz.toString();
关于Java - 打印随机字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316774/