随机字符串生成器不断增加以前的迭代

时间:2018-11-25 13:11:12

标签: java

我正在编写一个程序,该程序接受用户输入的长度必须为6的字符串,并创建该字符串的随机版本。然后,它打印出5-10次随机字符串的迭代。例如:

输入8和abcdef将创建8行abcdef的随机变化。下面的程序可以做到这一点,但是它是将字符串添加在一起的,如下所示:

abbdfe abbdfeacbfed 等等。有谁知道如何更改它,以便它将打印abbdfe acbfed等。

我知道我的代码存在一些功能上的问题,但是它起初是一个

package matrixMaker;
import java.util.Scanner;
import java.util.Random;

public class matrixMaker 
{
    public static void main(String[] args)
    {   
    Scanner in = new Scanner(System.in);
    System.out.print("Please enter a number between 5 and 10, inclusively: ");
    int userInput = in.nextInt();
    in.nextLine();
    System.out.print("Please enter a string of length 6 characters: ");
    String textToChange = in.nextLine();
    String randomText = "";
    int length = 6;



    // Print error if text is not 6 characters long.
    while(textToChange.length() != 6) 
    {
        System.out.println("Error! Enter a string of length 6.");
    }

    // If input is 6 characters, print out randomText X amount of times, depending on the user's specification of user.
    if(textToChange.length() == 6)
    {
        for (int i = 1; i <= userInput; i++)
        {
            // Initialise array to create random order of chars.
            Random rand = new Random();
            char[] text = new char[length];

            for(int a = 0; a < length; a++)
            {
                text[a] = textToChange.charAt(rand.nextInt(textToChange.length()));
            }

            // Take the chars from array and concatenate them into a string of the same size as the text variable.
            for(int a = 0; a < text.length; a++)
            {
                randomText += text[a];
            }
            System.out.printf(randomText + "\n");
        }
    }

    in.close();
}

}

1 个答案:

答案 0 :(得分:0)

您似乎在方法顶部初始化了变量randomText,但是继续在循环内添加到同一变量,因此它将继续添加到自身。

world

或者在循环内初始化randomText字符串,或者在循环内的最后一行之后,再次将其分配回空字符串。

顺便说一句,您似乎在这里还有另一个错误:

String randomText = "";

randomText += text[a];

此循环将无限循环,您需要添加一种方法,以允许用户在显示错误后更改输入。

// Print error if text is not 6 characters long.
    while(textToChange.length() != 6) 
    {
        System.out.println("Error! Enter a string of length 6.");
    }

-编辑添加到OP注释: 在奇数行号上打印奇数生成的文本的字符;一种方法是考虑将生成的randomText推到在循环外部初始化的空ArrayList中。然后,您可以单独循环遍历ArrayList。您可以考虑重构此方法的方式,并以自己喜欢的方式放入外部方法。像这样:

while(textToChange.length() != 6)
        {
            System.out.println("Error! Enter a string of length 6.");
            in.nextLine();
            textToChange = in.nextLine();
        }