在java中编写一个连续的'for'循环

时间:2015-07-14 16:23:59

标签: java arrays for-loop

我是java的新手,正在研究在线教程中的for循环,一个问题困扰着我。我将用一个例子解释我的疑问。

假设int array大小为4,其元素为{1, 2, 3, 4}。 假设用户想要以这样的方式打印array的元素:

{3,4,1,2,3,4,1,2,3,4}

用户想要从第三个数字打印数组直到数组结束,如果数组结束,数组应该从第一个开始重新开始,直到打印的总数应为10 。 这有可能吗?或者我们有什么方法可以做到这一点?

循环结束后是否可以从第一个开始再次打印?我尝试过使用List,但我无法提出任何答案。请帮助我提出你的建议。感谢

3 个答案:

答案 0 :(得分:3)

您可以使用模%运算符多次遍历数组。下面的代码也会以您描述的格式打印数字。

int[] array = {1, 2, 3, 4};
int start = 2; // 0 indexed position of 3rd number
int numTimesToPrint = 10;

System.out.print("{");
for (int i = 0; i < numTimesToPrint; i++) {
    if (i > 0) System.out.print(",");
    System.out.print(array[(i + start) % array.length]);
}
System.out.print("}");

答案 1 :(得分:2)

是的,这当然是可能的。像

这样的东西
public int[] buildArray(final int[] source, final int start, final int length) {
    int index = start;
    final int[] result = new int[length];
    for (int i = 0; i < length; i++) {
        result[i] = source[index++];
        if (index == source.length) {
            index = 0;
        }
    }
    return result;
}

测试:

public static void main(String[] args) {
    final int[] source = new int[] { 1, 2, 3, 4 };
    final int[] result = buildArray(source, 2, 10);
    System.out.println(Arrays.toString(result));
}

打印

[3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

使用buildArray(source, 2, 15);结果

[3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1]

请注意,此解决方案不考虑参数验证。 例如,如果:

  • source == null
  • source.length == 0
  • start < 0
  • start >= source.length

然后会抛出异常。

答案 2 :(得分:1)

您可以尝试以下代码: -

 public static void print () 
 {
     int[] array = {1,2,3,4};
     int count = 0;
     boolean if_later = false;
     boolean done = false;

     while (true) {
         if (if_later) {
             for (int i = 3; i < array.length; ++i) {
                  System.out.print(array[i] + " ");
                  ++count;
                  if (count == 10) {
                      done = true;
                      break;
                  }   
             } 
         } else {
             for (int i = 0; i < 3; ++i) {
                 System.out.print(array[i] + " ");
                 ++count;
                 if (count == 10) {
                     done = true;
                     break;
                 }   
             } 
         }

         /*
          * If all numbers are printed then break
          */
         if (done) {
             break;
         }

         /*
          * Toggle the boolean flag for printing
          * from the front of the array and the 
          * back of the array.
          */
         if (if_later) {
             if_later = false;
         } else {
             if_later = true;
         }
     }
  }