Java中从随机数生成器中获取字符
我应该创建一个程序来调用一个生成数字1到10的排列的方法。基本上,我应该用1-10之间的随机数填充一个数组,这个随机数永远不会得到一个重复数,每次调用这个方法都会得到不同的结果。我使用了Random()类,但出于某种原因,它正在生成符号、字符和数字。这是我的节目: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
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));