如何从数组中获取数字?

时间:2019-05-07 15:11:46

标签: java arrays

问题:
    假设这是我的数组{1,2,3,4,5,6,7,8}中的数字     每个数字都是一个位置,如::     1=1 ,2=2 , 3=3, 4=4, 5=5, 6=6, 7=7, 8=8

它不是数组位置,而只是数字位置。现在,我想删除奇数位置的数字,然后变成

2,4,6,8 :: 2=1, 4=2,  6=3,  8=4,

再次,我想从奇数位置删除,使其变为4,8 :: 4=1, 8=2

现在答案是8,那么如何获得此8

代码:

int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8}; //I am taking certain number in array   
System.out.println("Elements of given array present on even position:"); 
for (int i = 1; i < arr.length; i = i+2) {   
          System.out.println(arr[i]);
}

必须将值设为8,但在输出中我得到:

2 
2
2
2
4
4
4
4

以此类推

4 个答案:

答案 0 :(得分:0)

这将打印出偶数:

for (int i = 0; i < arr.length; i++) 
 {   
      if (arr[i] % 2 == 0)
      {
          System.out.println(arr[i]);
      }
 }

如果要从数组中删除奇数位置元素,请新建一个,并使用上面的代码排除奇数元素,如下所示:

ArrayList<Integer> newArr = new ArrayList<>();
for (int i = 0; i < arr.length; i++) 
 {   
      if (i % 2 == 0)
      {
          newArr.add(arr[i]);
      }
 }

答案 1 :(得分:0)

您可以使用ArrayList

ArrayList<Integer> list = new ArrayList<Integer>();

for(int i=0; i<arr.length; i++){
   if(i % 2 == 0){ //if divide by 2 gives remainder 0 it is even
   list.add(arr[i]);
   }
}
arr=list.toArray();//get the array version of the list

然后,您可以将其放入while循环中进行操作,直到只剩一个为止。

int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8};
while(arr.length>1){
...
}
System.out.println(arr[0]);

请记住,我们从0开始计数,因此第一个位置(i = 0)将是偶数,第二个位置(i = 1)将是不平坦的。

最终密码:

int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 8};
while(arr.length>1){
   ArrayList<Integer> list = new ArrayList<Integer>();

   for(int i=0; i<arr.length; i++){
      if(i % 2 == 0){ //if divide by 2 gives remainder 0 it is even
      list.add(arr[i]);
      }
   }
   arr=list.toArray();//get the array version of the list
}
System.out.println(arr[0]);

答案 2 :(得分:0)

这应该为您做

int [] arr = new int [] {1, 2, 3, 4, 5, 6, 7, 10, 11, 12}; //I am taking certain
        System.out.println("Elements of given array present on even position:");
        int counter=2;
        while(counter<=arr.length){
            counter*=2;
        }
        System.out.println(arr[(counter/2)-1]);

让我知道这是否可行

答案 3 :(得分:0)

正如我在评论中所说,您想要2的最大功效:

int max=0;
for (int i=0;i<arr.length;i++) {
   int pos = arr[i];
   if((pos & (pos-1)) == 0) { // check if pos is a power of 2
      max =java.lang.Math.max(max, pos);
   }
}
System.out.println(max)

如果arr = {1,2,3,4,5,6,7,8}; =>输出8

如果arr = {1,2,3,4,5,6,7,8,9} =>输出8

如果arr = {1,2,3,...,20} =>输出16