package test;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
double[] myList=new double[10];
System.out.println("enter values");
for (int i = 1; i < myList.length; i++) {
java.util.Scanner input=new java.util.Scanner(System.in);
int j = (int)Math.random() * myList.length;
double tmp=myList[j];
myList[i]=myList[j];
myList[j]=tmp;
System.out.println(tmp);
}
}
}
为什么打印0.0
?
答案 0 :(得分:0)
双精度和整数初始化为0,因此你的数组实际上是10个零。
你需要做一些事情:
double[] myList=new double[10];
System.out.println("enter values");
java.util.Scanner input=new java.util.Scanner(System.in);
for (int i = 0; i < myList.length; i++) {
myList[i] = input.nextDouble();// get input from user and put it into array
}
//and then we swap
for (int i = 0; i < myList.length; i++) {
int j = (int)Math.random() * myList.length;
double tmp=myList[j];
myList[i]=myList[j];
myList[j]=tmp;
}
System.out.println(tmp);
有一些问题:
Scanner
根本没有被使用,而且您创建了10次(因为它在循环中)您没有初始化数组,因此所有值均为0.0
您开始在索引1处循环,因此您错过了一些值
答案 1 :(得分:0)
如果你想真正滑动值而不是循环应该如下
for (int i = 0; i < myList.length; i++) {
int j = (int)Math.random() * myList.length;
double tmp=myList[i];
myList[i]=myList[j];
myList[j]=tmp;
}