从Java中随机数生成器获取字符

时间:2014-02-05 21:17:19

标签: java random permutation

我应该创建一个程序来调用一个生成数字1到10的排列的方法。基本上,我应该用1-10之间的随机数来填充一个永远不会得到重复数字的数组,并得到每次调用方法时都会有不同的结果。我使用了Random()类,但由于某种原因它生成了符号,字符和数字。这是我的计划:

import java.util.*;

 public class perms
   {
    public static void main(String[] args) 
    {
     int[] myPermutation;
     myPermutation = generatePermutation1To10();
     System.out.println(myPermutation);
    }

    private static int[] generatePermutation1To10() {
       Random rng = new Random();
       int[] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
       int[] finalNums = new int[nums.length];

       for (int k=0;k<finalNums.length; ++k)
       {
           int rnIdx = rng.nextInt(nums.length-k);
           finalNums[k] = nums[rnIdx];
           nums[rnIdx] = nums[nums.length-k-1];
       }
       return finalNums;
   }
 }

2 个答案:

答案 0 :(得分:2)

这些字符不是随机字符而是随机整数。这是the toString() method in Object的默认输出,这些数组(也是对象)不会覆盖。

  

[T]他的方法返回一个等于值的字符串:

getClass().getName() + '@' + Integer.toHexString(hashCode())

你可能看到过这样的事情:

[I@68111f9b

[I[int)的数组(I)的Java代码,68111f9b是哈希码的十六进制输出对于阵列。

尝试

System.out.println(Arrays.toString(myPermutation));

答案 1 :(得分:0)

您的代码是正确的,但您正在看到数组的内部表示。使用Arrays.toString打印出阵列:

System.out.println(Arrays.toString(myPermutation));