从另一个阵列加载数组

时间:2014-04-22 01:15:03

标签: java

IT似乎无法正常运作

'

   public class junk {

public static void main(String[] args){


int[] Arr = {1,0,1,1,0,1,0};
int[] newArr = null; 

  for(int i = 0; i < Arr.length; i++){

 if(isPowerOfTwo(i)) {
     newArr[i] = 9;
  }
   else{
   newArr[i] = Arr[i];

   }
}
  for (int i = 0; i < newArr.length; i++) {
   System.out.print(newArr[i] + ", ");
}
}




private static boolean isPowerOfTwo(int i) {
    if (i <= 0) {
        throw new IllegalArgumentException("number: " + i);
    }
    if ((i & -i) == i) {
        return true;
    }
    return false;

}

}

&#39;

这是一个阵列10011010,现在我想要这个9 9 1 9 0 0 1 9 1 0 1 0

所以2个指数的力量应该用9&#39; s来填充这个权利?

我如何将这些位数据加载到任何数组或Arraylist中,并带有一个循环,并且某些索引为9 ...想要第1,第2,第4和第8个索引......

_ _ 1 _ 0 0 1 _ 1 0 1 0

2 个答案:

答案 0 :(得分:0)

isPowerOfTwo()方法

中的问题
  • i <= 0为此您抛出异常并且您希望将Nine放在第0个索引处。

其次你没有初始化Array。

int[] newArr = new int[10]; 

否则会抛出NULLPointerException

  

想要第1,第2,第4和第8个指数......

isPowerOfTwo()方法中尝试以下条件。

if (i == 1) {
    return true;
}
else if (i%2==0 && i%3!=0) {
    return true;
}

For Array

int[] Arr = {1,0,1,1,0,1,0,1,0,1};

它会给你。

1,9,9,1,9,1,0,1,9,1
  ^ ^   ^       ^
  1 2   4       8

答案 1 :(得分:-1)

不要使用数组。定义时的数组必须具有恒定的长度,因此如果要将新条目添加到数组中,最好使用Arraylist,因为在添加新元素时可以更改Arraylist的长度,而不是具有固定长度的数组。 / p>

List<int[]> newArr = new ArrayList<int[]>();

代替使用for循环,我认为do while循环在这种情况下会更好用。如果您有选择地需要第1,第2,第4和第8个标记,则以下内容应该有效。

index = 0;
do {
    if (index == 0) {
        newArr.add(9);
        newArr.add(9);
    } else if (index == 1 || index == 4) {
        newArr.add(9);
    }
    newArr.add(Arr[index]);
    index = index + 1;
while (index < Arr.length);

我很乐意解决这个问题以满足您的需求。我希望这部分内容有所帮助。