我编写了代码,但没有从double转换为int。
public class Array {
public static void main(String[] args) {
int i;
int[] ar1 = new int[100];
for(int i = 0; i < ar1.length; i++) {
ar1[i] = int(Math.random() * 100);
System.out.print(ar1[i] + " ");
}
}
}
如何纠正?
答案 0 :(得分:6)
ar1[i] = (int)(Math.random() * 100);
Java中的转换看起来像是C中的强制转换。
答案 1 :(得分:4)
应该是
ar1[i] = (int)(Math.random() * 100);
当你施放时,施法类型应该在括号中,例如(cast type)value
答案 2 :(得分:4)
试试这个:
package studing;
public class Array {
public static void main(String[] args) {
Random r = new Random();
int[] ar1 = new int[100];
for(int i = 0; i < ar1.length; i++) {
ar1[i] = r.nextInt(100);
System.out.print(ar1[i] + " ");
}
}
}
为什么呢?
Math.random()
可以返回1,这意味着Math.random()*100
可以返回100,但OP要求最多99!使用nextInt(100)
是100,它只能返回0到99之间的值。Math.random()
无法返回-0.000001
<{1}} 的0
, 1.0000001
无法返回1
}}。因此,获得0
或99
的机会比获得0
或99
的机会少。通过这种方式,猜测&#34;它不是1
或98
&#34;比#34更真实;它不是strictfp
或{{1}}&#34;。答案 3 :(得分:1)
这实际上并没有使用java.lang.Math
类,但在Java 8中,也可以这种方式创建随机数组:
int[] random = new Random().ints(100, 0, 100).toArray();
答案 4 :(得分:0)
我的解决方案使用随机类而不是Math.random。这里是。
private static int[] generateArray(int min, int max) { // generate a random size array with random numbers
Random rd = new Random(); // random class will be used
int randomSize = min + rd.nextInt(max); // first decide the array size (randomly, of course)
System.out.println("Random array size: " + randomSize);
int[] array = new int[randomSize]; // create an array of that size
for (int i = 0; i < randomSize; i++) { // iterate over the created array
array[i] = min + rd.nextInt(max); // fill the cells randomly
}
return array;
}