Java-打印随机字
我在锻炼方面有问题。我需要打印五个随机单词,介于最小和最大字母之间 这就是我所做的:Java-打印随机字,java,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++){ Strin
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;
}
Vjezba包;
导入acm.程序。*;
导入acm.util.RandomGenerator;
导入java.util.*;
公共类String2扩展了控制台程序{
公开作废运行(){
对于(int i=0;iniz+='c';
应该是niz=niz+c;
或niz+=c;
[我个人更喜欢第一个,因为更清楚的是,对象没有被修改,但引用被更改]
另外,niz
应该声明在循环的范围之外[在for
行之前]
String niz = "";
for (int x=0; x<a; x++){
char c = randomChar();
niz = niz + c;
}
return niz;
字符串niz=”“;
for(int x=0;x,如果性能是一个问题,但我认为这里不是这样。您在for循环中声明了您的字符串;每次它循环时,您都会得到一个新的(空)字符串。您还添加了字符“c”,而不是字符c
String niz = "";
for (int x=0; x<a; x++){
//String niz = "";
char c = randomChar();
niz += c; // c not 'c'
}
别理我的评论,我还没醒呢有一个作用域问题;您在for
循环中声明字符串变量,然后在循环结束后尝试返回它-我想您会遇到编译错误。请修改它,使空字符串声明位于for
循环之前。您说“有问题”是什么意思?您是否遇到异常?是否没有返回任何内容?+1,感谢您在遇到问题后寻求帮助,而不是要求我们为您做作业。+=
工作正常(不过,实际上并非如此,因为它每次都会创建一个新的字符串
,与niz=niz+c;
)@布莱恩·罗奇:读我的答案,我说我更喜欢它的清晰性,而不是它不起作用,“不起作用”部分指的是“添加”“c”
,而不是c
。是的,现在你编辑了它,它确实这样说。它注意到了我的答案中循环中声明的字符串和StringBuilder的问题…@Brian Roach:我的答案在8分钟前编辑过,你的答案在2分钟前编辑过。你的评论是6分钟前的,停止搜索。注意看吗编辑并查看我添加的唯一内容是//c而不是'c'
,或者你想继续玩这个游戏吗?
StringBuilder niz = new StringBuilder();
for (int x=0; x<a; x++){
char c = randomChar();
niz.append(c);
}
return niz.toString();