我正在尝试将包含'a-z','A-Z','0-10'的数组存储到char数组中,并使用shuffle算法对其进行混洗。所以我把它们全部存放在一个arraylist中并尝试打印它我没有得到数字而是我有空格显示
static List<char[]> mapelements;
public static char[] generateMapping() {
char[] a=new char[26];
int k=0;
for(int i=0;i<26;i++)
{
a[i]=(char)(97+(k++));
}
System.out.println(a);
char[] A=new char[26];
int l=0;
for(int i=0;i<26;i++)
{
A[i]=(char)(65+(l++));
}
System.out.println(A);
int aLen=a.length;
int Alen=A.length;
char[] result=new char[aLen+Alen];
System.arraycopy(a, 0, result, 0, aLen);
System.arraycopy(A, 0, result, aLen, Alen);
System.out.print(result);
char[] digits=new char[10];
for(char nums='0';nums<=digits.length;nums++)
{
digits[nums]=nums;
}
System.out.println("this is digits"+digits);
System.out.println(digits);
mapelements=new ArrayList<char[]>();
mapelements.add(result);
mapelements.add(digits);
//mapelements.add(' ');
shuffleList(mapelements);
for(char[] shuffle:mapelements)
{
System.out.println("this is shuffle"+Arrays.toString(shuffle));
}
return null; //to be completed
}
public static void shuffleList(List<char[]> a)
{
int n=a.size();
Random rand=new Random();
rand.nextInt();
for(int i=0;i<n;i++){
int change=i+rand.nextInt(n-1);
swap(a,i,change);
}
}
private static void swap(List<char[]> a,int i,int change){
char[] helper=a.get(i);
a.set(i,a.get(change));
a.set(change,helper);
}
答案 0 :(得分:2)
您应该使用System.out.println(Arrays.toString(arr))
来打印数组。
此外,您的数字循环有问题。它应该是:
for(char nums='0';nums<'0'+digits.length;nums++)
{
digits[nums-'0']=nums;
}
永远不会输入原始循环,因为&#39; 0&#39; &GT; digits.length,所以循环的条件永远不会成真。