日期:2014-05-19  浏览次数:20681 次

现有一个32 位的整型变量 value 和一个有32 个元素的数组a[32]
描述:现有一个32 位的整型变量 value 和一个有32 个元素的数组a[32],要求:1、对value 随机赋值; 2、让数组a[n]的值等于value“位n”的值,0<=n<=31。举例:如果value 的“位0”(Bit0)=0,那 么a[0]=0;如果value 的“位10”(Bit10)=1,那么a[10]=1。

/**
 * :1、对value 随机赋值;
 * 2、让数组a[n]的值等于value“位n”的值,0<=n<=31。
 * @author Administrator
 */
public class Foo {
  public static void main(String[] args) {
  // 产生随机数
  int random = (int) (Math.random() * Integer.MAX_VALUE) + 1;
  // 转换成二进制字符串
  String str = Integer.toBinaryString(random);
  // 转换成二进制时最前面的零被省略, 补上省略的0
  if (str.length() < 32) {
  for (int i = 0; i < 32 - str.length(); i++) {
  str = "0" + str;
  }
  }
  // 给数组赋值
  int[] a = new int[32];
  for (int i = 0; i < str.length(); i++) {
  a[i] = Integer.parseInt(String.valueOf(str.charAt(i)));
  System.out.println("a[" + i + "]=" + a[i]);
  }
  }
}

产生数组长度应是32,但是答应结果却不统一,有32,有31,这是为什么

结果一:
a[0]=0
a[1]=0
a[2]=1
a[3]=1
a[4]=0
a[5]=0
a[6]=0
a[7]=1
a[8]=0
a[9]=0
a[10]=0
a[11]=0
a[12]=0
a[13]=0
a[14]=0
a[15]=0
a[16]=0
a[17]=1
a[18]=1
a[19]=0
a[20]=0
a[21]=1
a[22]=0
a[23]=0
a[24]=0
a[25]=1
a[26]=0
a[27]=1
a[28]=1
a[29]=0
a[30]=0


结果二:
a[0]=0
a[1]=1
a[2]=0
a[3]=1
a[4]=1
a[5]=1
a[6]=1
a[7]=0
a[8]=0
a[9]=0
a[10]=0
a[11]=0
a[12]=1
a[13]=0
a[14]=0
a[15]=1
a[16]=0
a[17]=1
a[18]=0
a[19]=1
a[20]=0
a[21]=1
a[22]=1
a[23]=1
a[24]=1
a[25]=0
a[26]=0
a[27]=1
a[28]=0
a[29]=0
a[30]=0
a[31]=1
不太明白,那位大神帮忙看看这是咋回事?


------解决方案--------------------
Java code

if (str.length() < 32) {
  for (int i = 0; i < 32 - str.length(); i++) {
  str = "0" + str;
  }
  }