public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6}; Random t = new Random(arr.length); int r = t.nextInt(arr.length); for (int i = 0; i < arr.length - 1; i++) { int temp = arr[i]; arr[i] = arr[r]; arr[r] = temp; } System.out.println(Arrays.toString(arr)); }只能生成一次随机结果,刷新几次结果都一样
时间: 2024-02-14 07:15:40 浏览: 24
这是因为 `Random` 构造函数传入的参数是一个种子值,而不是数组的长度。当种子值相同时,生成的随机数序列也是相同的。因此,你需要将 `Random` 构造函数中的参数换成一个随机的种子值,比如当前时间的毫秒数 `System.currentTimeMillis()`。这样每次运行程序时,种子值都会不同,生成的随机数序列也就不同了。修改后的代码如下:
```
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6};
Random t = new Random(System.currentTimeMillis());
int r = t.nextInt(arr.length);
for (int i = 0; i < arr.length - 1; i++) {
int temp = arr[i];
arr[i] = arr[r];
arr[r] = temp;
}
System.out.println(Arrays.toString(arr));
}
```
相关问题
public static void main(int[] arr)
引用: public static void main(String[] args) { int maxSum = arr; int[] arr ={1,-2,3,-2,5,6}; for(int i = 0; i < arr.length; i ) { int sum = arr[i]; int maxSum1 = sum; for(i。说明了这是一个Java的main方法,参数类型是String数组。这个方法没有返回值。
引用: public static void main(String... args) { String[] arr = new String[]{"zhang","li","wang","zhao"}; MainTest.main(arr); MainTest.sysInfo(); } 这个例子演示了如何通过调用另一个类的main方法来传递参数。
由于没有引用到对应的内容,我无法给出准确的答案。根据Java的语法,public static void main(int[] arr) 是不合法的方法签名。Java的main方法只接受String数组作为参数。
public class Teacher { int arr[]=new int[10]; public static void main(String args[]){ System.out.println(arr[1]); } }
这段代码会报错,因为在静态方法 main 中无法直接访问非静态成员 arr。需要将 arr 声明为静态成员变量才能在 main 方法中访问。正确的代码应该是:
public class Teacher {
static int arr[] = new int[10];
public static void main(String args[]) {
System.out.println(arr[1]);
}
}