如何迭代数组并跳过一些?

时间:2017-09-26 19:54:53

标签: java arrays for-loop

例如,我在我的Java程序中有这个数组:

String nums[] = {"a", "b", "c", "d", "e", "f", "g", "h" ...}

我想编写for循环,循环遍历数组并取每个第2和第3个字母并将它们分别存储在数组中的两个连续索引中,跳过第4个字符,取第5个和第6个字母并将每个字母连续存储数组中的索引,跳过第7个并继续为未知大小的数组执行此操作。

所以最终的数组是nums2 = {"b", "c", "e", "f", "h", "i"...}

6 个答案:

答案 0 :(得分:1)

您可以在for循环中使用if语句,该语句将跳过从数组中的第二个项开始的每三个字母。

int j=0;    //separate counter to add letters to nums2 array
for(int i=0; i<nums.length; i++) {    //starts from 1 to skip the 0 index letter
    if (i%3 != 0) {    //should include every letter except every third
        nums2[j] = nums[i];
        j++;
    }
}

答案 1 :(得分:1)

for(int num : nums){
    if(num % 3 == 1) Continue;
    System.out.print(num + " ");
}

上面的示例java代码

答案 2 :(得分:1)

请始终分享您到目前为止所尝试的内容。人们会更乐于接受你的帮助。否则,你应得的最多是伪代码。尝试类似:

    for (1 to length)
    {
        if( i % 3 != 0)
        add to new array
    }

答案 3 :(得分:0)

 String[] array = {"a", "b", "c", "d", "e", "f", "g", "h" ...} //Consider any datatype 
 for(int i =1; i<array.length;i++) {
 if(i%3 == 0) {
 }
 else {
 System.out.println(a[array]);
 }

}

这样它会跳过第4个元素,第7个元素,第10个元素,13对应的索引值是3的倍数的元素,我们正在跳过if条件的索引元素。

答案 4 :(得分:0)

这会运行并打印out = b, c, e, f, h, i

public class Skip {
    public static String[] transform(String[] in) {
        int shortenLength = (in.length / 3) + ((in.length % 3 > 0) ? 1 : 0);
        int newLength = in.length - shortenLength;
        String[] out = new String[newLength];
        int outIndex = 0;
        for (int i = 0; i < in.length; i++) {
            if (i % 3 != 0) {
                out[outIndex++] = in[i];
            }
        }
        return out;
    }

    public static void main(String[] args) {
        String[] nums = {"a", "b", "c", "d", "e", "f", "g", "h", "i" };
        String[] out = transform(nums);
        System.out.println("out = " + String.join(", ", out));
    }
}

答案 5 :(得分:0)

以最简洁的方式,使用Java 9流:

String[] nums2 = IntStream.range(0, nums.length)
    .filter(i -> i % 3 != 0)
    .mapToObj(i -> nums[i])
    .toArray(String[]::new);