Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-打印随机字_Java - Fatal编程技术网

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;i
niz+='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();