Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 需要将数组输出转换为For循环外部的字符串_Java_Arrays_For Loop_Random_Encapsulation - Fatal编程技术网

Java 需要将数组输出转换为For循环外部的字符串

Java 需要将数组输出转换为For循环外部的字符串,java,arrays,for-loop,random,encapsulation,Java,Arrays,For Loop,Random,Encapsulation,为了准备JavaSE11测试,我正在尝试使用数组进行练习,我需要帮助使我的随机名称生成器正常工作。现在,我并不担心名称是否“有效”(像Xvtwg这样的真正随机名称也可以) 我构建了一个循环,其中生成了一个3到10之间的随机值(名称的长度),然后为每个循环过程选择一个0到25之间的随机索引,以获取字母表中的一个随机字母。所有这些都可以工作,我能够从循环中获取输出数组,并将其转换为循环中的串联字符串。当我需要调用局部变量nameFinal作为set函数的值时,问题就会出现 我尝试在循环内部和外部声明

为了准备JavaSE11测试,我正在尝试使用数组进行练习,我需要帮助使我的随机名称生成器正常工作。现在,我并不担心名称是否“有效”(像Xvtwg这样的真正随机名称也可以)

我构建了一个循环,其中生成了一个3到10之间的随机值(名称的长度),然后为每个循环过程选择一个0到25之间的随机索引,以获取字母表中的一个随机字母。所有这些都可以工作,我能够从循环中获取输出数组,并将其转换为循环中的串联字符串。当我需要调用局部变量nameFinal作为set函数的值时,问题就会出现

我尝试在循环内部和外部声明输出字符串,但两种方法都返回“nameFinal无法解析为变量”。我还尝试将输出数组移到循环外部(并重新定义其输出),但返回相同的变量

我添加了一个try/catch块来更好地说明这个问题。下面是我的代码:


public class Tester {
    public static void main(String[] args) {
        //Build random values
        Random rand = new Random();
        
        //Name random index 3-10 char
        int nmax = 10;
        int nmin = 3;
        int rand1 = (int)(Math.random() * (nmax - nmin + 1) + nmin);
        //Create random name from total number of letters
        //Define Array of letters
        String[] letters = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        //Create random index to pull a random letter over the length of the random index
        int lmax = 25;
        int lmin = 0;
        //I have also tried declaring newName and nameFinal here
        for(int i = 0; i <= rand1; i++) {
            int randl = (int)(Math.random() * (lmax - lmin + 1) + lmin);
            String[] newName;
            newName[i] = letters[i];
            String nameFinal = Arrays.toString(newName);
        }
        //Concatenate array of random letters into a "name"
        try{
            String nameFinal = Arrays.toString(newName);
            System.out.println(nameFinal);
        }catch(Exception e) {
            e.PrintStackTrace()
        }
        //Implementation omitted
    }
}

公共类测试员{
公共静态void main(字符串[]args){
//建立随机值
Random rand=新的Random();
//名称随机索引3-10字符
int nmax=10;
int nmin=3;
int rand1=(int)(Math.random()*(nmax-nmin+1)+nmin);
//根据字母总数创建随机名称
//定义字母数组
字符串[]字母={“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”};
//创建随机索引以在随机索引的长度上拉取一个随机字母
int-lmax=25;
int-lmin=0;
//我也尝试过在这里声明newName和nameFinal

对于(inti=0;i我对您的代码做了一些更改。希望这对您有所帮助

public static void main(String[] args) {
    //Build random values
    Random rand = new Random();
    Test test = new Test();
    test.randomName();
    test.createAge();
    test.createSSN();
}

//Name random index 3-10 char
public void randomName() {
    int nmax = 10;
    int nmin = 3;
    int rand1 = (int)(Math.random() * (nmax - nmin + 1) + nmin);
    //Create random name from total number of letters
    //Define Array of letters
    String[] letters = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};

    //Create random index to pull a random letter over the length of the random index
    int lmax = 25;
    int lmin = 0;

    ArrayList<String> name = new ArrayList<>(5);
    for(int i = 0; i <= rand1; i++) {
        int randl = (int)(Math.random() * (lmax - lmin + 1) + lmin);
        name.add(letters[rand1]);
    }
    System.out.println(name.toString());
}

//Age random number between 1 and 100
private void createAge(){
    int amax = 100;
    int amin = 1;
    int rand2 = (int)(Math.random() * (amax - amin + 1) + amin);
}

//SSN random 9 digit number
private void createSSN(){
    int smax = 999999999;
    int smin = 100000000;
    int rand3 = (int)(Math.random() * (smax - smin + 1) + smin);
}
   
}
publicstaticvoidmain(字符串[]args){
//建立随机值
Random rand=新的Random();
测试=新测试();
test.randomName();
test.createAge();
test.createSSN();
}
//名称随机索引3-10字符
公共名称(){
int nmax=10;
int nmin=3;
int rand1=(int)(Math.random()*(nmax-nmin+1)+nmin);
//根据字母总数创建随机名称
//定义字母数组
字符串[]字母={“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“y”、“z”};
//创建随机索引以在随机索引的长度上拉取一个随机字母
int-lmax=25;
int-lmin=0;
ArrayList名称=新的ArrayList(5);

for(int i=0;我采用声明字符串nameFinal=”"在循环之前,但在循环内部设置其值。忘记新名称,只需将一个字母一次连接到字符串上。发布否决票的人可以告诉我原因吗?在发布之前,我花了大量时间研究这个问题,仔细检查我是如何问的,并确保它像co一样彻底和详细需要uld…请在代码问题中给出一个--cut&paste&runnable代码,包括作为代码的最小代表性示例输入;期望和实际输出(包括逐字错误消息);标记和版本;明确说明和解释。暂停工作以实现总体目标。将代码切碎到所能达到的最少代码,即您显示的代码是正常的,由您显示的代码扩展为您显示的代码是不正常的。找到执行过程中变量状态不是预期状态的第一个点。(调试基础。)根据权威文档说明您的期望和原因。很公平,感谢提示。也就是说,是否真的有必要回过头来对几个月前的问题进行向下投票?我会尽最大努力编辑它,尽管这个问题已经用答案解决了:/用类封装了它。大的、块状的te我写的xt很难阅读,这确实有助于创建更好的参考资料