我应该创建一个程序来调用一个生成数字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;
}
}
答案 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));