程序的数字输出与预期不符

时间:2014-01-13 12:06:19

标签: java arrays

代码看起来正确,但它不会像我预期的那样工作:

  

示例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

1 个答案:

答案 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。