В соседнем вопросе вы указали на использование статических переменных, подскажите пожалуйста в чём конкретно причина почему их нельзя использовать? И как в моём случае их можно избежать? Почему код не проходит проверку?
package com.javarush.task.task03.task0313;
/*
Мама мыла раму
*/
public class Solution
{
private class Variable
{
String index;
String value;
}
private Variable[] variable;
public static int count = 0;
public static void main(String[] args)
{
Solution solution = new Solution();
String[] textArray = {"Мама", "Мыла", "Раму"};
solution.setVariables(textArray);
solution.permutationTextArray(textArray);
solution.fillerValueByText(textArray);
solution.printValue();
}
public void permutationTextArray(String[] textArray)
{
String str = "";
if (textArray.length < 10)
{
for (int i = 0; i < textArray.length; i++)
{
str = str + i;
}
permutation("", str);
}
else
{
System.out.println("Слишком трудоёмко.");
return;
}
}
public void permutation(String prefix, String str)
{
int n = str.length();
if (n == 0)
{
variable[count].index = prefix;
count++;
}
else
{
for (int i = 0; i < n; i++)
permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i + 1, n));
}
}
public void fillerValueByText(String[] text)
{
for (int i = 0; i < variable.length; i++)
{
for (int j = 0; j < text.length; j++)
{
variable[i].value = variable[i].value + text[Character.getNumericValue(variable[i].index.charAt(j))];
}
}
}
public void printValue()
{
System.out.print(variable[0].value);
for (int i = 1; i < variable.length; i++)
{
System.out.println("");
System.out.print(variable[i].value);
}
}
public void setVariables(String[] text)
{
int size = text.length, factorial = 1;
while (size >= 1)
{
factorial *= size;
size--;
}
variable = new Variable[factorial];
for (int i = 0; i < factorial; i++)
{
variable[i] = new Variable();
variable[i].index = "";
variable[i].value = "";
}
}
}