我是java的新手,正在研究在线教程中的for
循环,一个问题困扰着我。我将用一个例子解释我的疑问。
假设int
array
大小为4
,其元素为{1, 2, 3, 4}
。
假设用户想要以这样的方式打印array
的元素:
{3,4,1,2,3,4,1,2,3,4}
用户想要从第三个数字打印数组直到数组结束,如果数组结束,数组应该从第一个开始重新开始,直到打印的总数应为10
。
这有可能吗?或者我们有什么方法可以做到这一点?
循环结束后是否可以从第一个开始再次打印?我尝试过使用List
,但我无法提出任何答案。请帮助我提出你的建议。感谢
答案 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;
}
}
}