Необходимо преобразовать вывод массива в строку за пределами цикла For - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь потренироваться в подготовке к тесту Java SE 11, и мне нужна помощь, чтобы мой генератор случайных имен заработал. Прямо сейчас я не беспокоюсь о том, что имя является «допустимым» (действительно случайное имя, такое как Xvtwg, вполне подойдет). Я построил al oop, где генерируется случайное значение от 3 до 10 (длина имени), а затем для каждого прохода l oop выбирается случайный индекс от 0 до 25, чтобы получить случайную букву алфавита. Все это работает, и я могу взять выходной массив из l oop и превратить его в сцепленную строку в l oop. Проблема возникает позже, когда мне нужно вызвать локальную переменную nameFinal в качестве значения для функции set. Я попытался объявить выходную строку как внутри, так и снаружи l oop безрезультатно. Я также попытался переместить мой выходной массив за пределы l oop (и переопределить его вывод) без кубиков. В частности, ошибка говорит: «nameFinal не может быть преобразован в переменную». Вот мой код:

package RegressionTest;

import java.util.Arrays;
import java.util.Random;

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"
        //String nameFinal = Arrays.toString(newName);

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

        //SSN random 9 digit number
        int smax = 999999999;
        int smin = 100000000;
        int rand3 = (int)(Math.random() * (smax - smin + 1) + smin);

        //Redefine outputs to random values
        encapsulationPractice output = new encapsulationPractice();
        output.setName(nameFinal);
        output.setAge(rand2);
        output.setSSN(rand3);
    }
}

1 Ответ

2 голосов
/ 18 февраля 2020

Я немного изменил ваш код. Надеюсь, это поможет вам!

    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;

    ArrayList<String> name = new ArrayList<>(5);
    //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);
        name.add(letters[rand1]);
    }
    //Concatenate array of random letters into a "name"
    //String nameFinal = Arrays.toString(newName);

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

    //SSN random 9 digit number
    int smax = 999999999;
    int smin = 100000000;
    int rand3 = (int)(Math.random() * (smax - smin + 1) + smin);

    //Redefine outputs to random values
    System.out.println(name.toString());
}
...