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

Java中从随机数生成器中获取字符,java,random,permutation,Java,Random,Permutation,我应该创建一个程序来调用一个生成数字1到10的排列的方法。基本上,我应该用1-10之间的随机数填充一个数组,这个随机数永远不会得到一个重复数,每次调用这个方法都会得到不同的结果。我使用了Random()类,但出于某种原因,它正在生成符号、字符和数字。这是我的节目: import java.util.*; public class perms { public static void main(String[] args) { int[] myPermutat

我应该创建一个程序来调用一个生成数字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;
   }
 }
import java.util.*;
公营烫发
{
公共静态void main(字符串[]args)
{
int[]我的置换;
myPermutation=generatePermutation1To10();
System.out.println(myPermutation);
}
私有静态int[]generatePermutation1To10(){
随机rng=新随机();
int[]nums={1,2,3,4,5,6,7,8,9,10};
int[]finalNums=新int[nums.length];

对于(int k=0;k这些字符不是随机字符,而是随机整数。这是的默认输出,其中数组(也是对象)不重写

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

getClass().getName() + '@' + Integer.toHexString(hashCode())
你可能看到过这样的情况:

[I@68111f9b
[I
int
I
)的数组(
[
)的Java代码,
68111f9b
是数组哈希代码的十六进制输出

试一试


您的代码是正确的,但您看到的是数组的内部表示形式。用于打印数组:

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

值得补充的是,您打印出来的是一个内存位置。这就是为什么它看起来像随机数字和字符。成功了!非常感谢!我不知道它是这么做的。@John,它不是内存位置,它实际上是对象的十六进制哈希代码,带有类型前缀。@Cruncher Oops。你们都对了。
getClass().getName()+'@'+Integer.toHexString(hashCode())
System.out.println(Arrays.toString(myPermutation));