我正在制作一个Bubblesort,它应该随机抽取一些数字然后返回它们,但我仍然可能会失去精确度#39;编译时出错告诉我Math.random返回一个double,我需要一个整数。我怎么能隐瞒这个?
public class Bubblesort {
public static void main(String[] args) {
//create an int array we want to sort using bubble sort algorithm
int intArray[] = new int [Math.random()*100];
以下是我的代码以防万一。
编辑:涉及的代码更多,我认为我不需要包含这些代码。我尝试过投射,但System.out.println现在还没有工作。
其余代码:
public static void main(String[] args) {
//create an int array we want to sort using bubble sort algorithm
int intArray[] = new int [(int)Math.random()*100];
//int intArray[] = new int [100];
//print array before sorting using bubble sort algorithm
System.out.println("Array Before Bubble Sort");
for(int i=0; i < intArray.length; i++){
System.out.print(intArray[i] + " ");
}
//sort an array using bubble sort algorithm
bubbleSort(intArray);
System.out.println("");
//print array after sorting using bubble sort algorithm
System.out.println("Array After Bubble Sort");
for(int i=0; i < intArray.length; i++){
System.out.print(intArray[i] + " ");
}
答案 0 :(得分:6)
不要忘记在向下转换为int
之前将其括在括号中,否则它将转换为零,因为Math.random()会返回double
具有正号的值,大于或等于0.0且小于1.0。
int intArray[] = new int [(int)(Math.random()*100)];
答案 1 :(得分:6)
替代类型转换,您只需使用Random
:
Random r = new Random();
int retval = r.nextInt(100);
答案 2 :(得分:3)
使用带有nextInt(int n)
的java.util.RandomRandom random = new Random()
int intArray[] = new int [random.nextInt(100)];
来自nextInt(int n)
的随机javadoc:
返回从此随机数生成器序列中提取的伪随机,均匀分布的int值,介于0(包括)和指定值(不包括)之间。
答案 3 :(得分:2)
您可以输入演员
int intArray[] = new int [(int)(Math.random()*100)];
答案 4 :(得分:0)
有一种叫做cast的方法。
new int [(int) Math.random()*100];
它将返回值转换为转换方法中使用的数据类型。
答案 5 :(得分:0)
试试这个,
int randomWithRange(int min, int max){
int range = (max - min) + 1;
return (int)(Math.random() * range) + min;
}
答案 6 :(得分:0)
只是为了澄清:您正在创建一个随机长度而非随机值的数组。这是为了吗?
如果不是:
int intArray[] = new int [somesize];
for(int i=0;i<intArrey.length();i++)
{
intArrey[i]= (int)(Math.random()*100);
}
答案 7 :(得分:-1)
创建随机整数i的正确方法是:
Double d = Math.random()*100;
int i = d.intValue();