代码看起来正确,但它不会像我预期的那样工作:
示例Run1: 用二进制填充5个元素的数组? (1-yes,0- no):1 生成的数组:0 1 1 0 0 示例Run2: 用二进制填充5个元素的数组? (1-yes,0- no):0 生成的数组:9 8 8 2 1
代码:
public static boolean Q1(int a) {
if (a == 1)
return true;
return false;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Fill array of 5 elements with binary? (1-yes, 0- no): ");
int num = s.nextInt();
int[] Array1 = new int[5];
if ( Q1(num) == true){
for ( int i = 0; i<5 ; i++){
int ran = 0 + (int) Math.random() + (2);
Array1[i] = ran;
System.out.print(Array1[i] + " ");
}
}
else
{
for ( int i = 0; i<5 ; i++){
int ran = 0 + (int) Math.random() + 10;
Array1[i] = ran;
System.out.print(Array1[i] + " ");
}
}
}
}
NOT:假设用户只输入1&amp; 0 *
我得到了这个输出:
用二进制文件填充5个元素的数组? (1-yes,0- no):0 10 10 10 10 10
答案 0 :(得分:4)
更改
(int) Math.random() + 10;
只返回10,因为Math.random()返回0到0.999999,而且转换为int总是返回0。
到
(int) (10 * Math.random());
返回0到9
另一个是
(int) (2 * Math.random());
返回0或1。
更好的选择是使用Random对象并在其上调用nextInt(2)
用于二进制或nextInt(10)
用于非二进制int。