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
答案 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);
我很乐意解决这个问题以满足您的需求。我希望这部分内容有所帮助。