我让我的代码以预期的方式工作,但是当我尝试制作多个排列列表时,它给了我第一个并且不会改变它。 我需要使用Arraylist制作1到10的排列列表,并捕获代码中可能出现的一个错误。然后我们必须复制该代码,以便我们得到9个不同的排列行。
import java.util.ArrayList;
import java.util.Random;
public class Permutations
{
ArrayList <Integer> Perm = new ArrayList <Integer> ();
ArrayList <Integer> Print = new ArrayList <Integer> ();
int counter = 9;
int List = 1;
public void ArrayList()
{
Perm.add(1);
Perm.add(2);
Perm.add(3);
Perm.add(4);
Perm.add(5);
Perm.add(6);
Perm.add(7);
Perm.add(8);
Perm.add(9);
Perm.add(10);
}
public void PermutationGenerator()
{
ArrayList();
Random rand = new Random();
int value = rand.nextInt(10) + 1;
while(Print.size() < 10)
{
try
{
while(Print.contains(value))
{
value = rand.nextInt(10) + 1;
}
Print.add(value);
Perm.remove(value);
}
catch(IndexOutOfBoundsException a)
{
System.out.println("");
}
}
System.out.println("List" + List + ":" + Print.toString());
List++;
if(List < 10)
{
PermutationGenerator();
}
}
这是打印出来的:
List1:[9,6,5,4,10,2,8,7,1,3]
List2:[9,6,5,4,10,2,8,7,1,3]
List3:[9,6,5,4,10,2,8,7,1,3]
List4:[9,6,5,4,10,2,8,7,1,3]
List5:[9,6,5,4,10,2,8,7,1,3]
List6:[9,6,5,4,10,2,8,7,1,3]
List7:[9,6,5,4,10,2,8,7,1,3]
List8:[9,6,5,4,10,2,8,7,1,3]
List9:[9,6,5,4,10,2,8,7,1,3]
答案 0 :(得分:1)
在PermutationGenerator的末尾,递归地调用相同的方法。在这一点上,变量Print已经有10个随机元素。
每次执行PermutationGenerator方法时,都需要清空Print变量,因此执行while循环。在您的情况下,Print变量始终具有相同的10个元素,因此while循环仅在第一次执行,而Print变量永远不会被修改。
答案 1 :(得分:0)
import java.util.ArrayList;
import java.util.Random;
public class Permutations {
ArrayList<Integer> Perm = new ArrayList<Integer>();
ArrayList<Integer> Print = new ArrayList<Integer>();
int counter = 9;
int List = 1;
public void ArrayList() {
Perm.add(1);
Perm.add(2);
Perm.add(3);
Perm.add(4);
Perm.add(5);
Perm.add(6);
Perm.add(7);
Perm.add(8);
Perm.add(9);
Perm.add(10);
}
public void PermutationGenerator() {
ArrayList();
Random rand = new Random();
int value = rand.nextInt(10) + 1;
//list: 1-9
while (Print.size() < 10) {
try {
while (Print.contains(value)) {
value = rand.nextInt(10) + 1;
}
Print.add(value);
Perm.remove(value);
} catch (IndexOutOfBoundsException a) {
System.out.println("");
}
}
System.out.println("List" + List + ":" + Print.toString());
List++;
if (List < 10) {
Print.removeAll(Print);
PermutationGenerator();
}
}
public static void main(String[] args) {
Permutations permutations = new Permutations();
permutations.PermutationGenerator();
}
}
答案 2 :(得分:-1)
如果我将这一行添加到最后的while循环中,我得到了答案。
[]