我想循环一组数字并改变它们在每一行的位置。它读取一系列整数(最多10个),直到从键盘输入非整数。我的预期结果是这样的:
>> 4 0 3 4 2 q
4 0 3 4 2
0 3 4 2 4
3 4 2 4 0
4 2 4 0 3
2 4 0 3 4
任何人都可以教我如何处理它吗?提前致谢。
答案 0 :(得分:2)
通过模拟算术的一些知识,您可以将数组折叠成圆形。观察到每个索引的起点从前一行的起点向右移动一个位置。所以你这样做你的循环:
n := length of the array
for i = 0 to n-1 (assuming the array is zero-based)
j := i
do loop
print(array[j])
j := j + 1
j := j%n
until j = i
end for
这是一种与语言无关的伪代码。使其适应您编码的任何语言。
答案 1 :(得分:1)
这是一种根据需要移动数字的方法。我冒昧地评论它,让你更好地了解正在发生的事情。
public static void shift(int[] numbers) {
//Store the first element
int first = numbers[0];
//Start for-loop at the beginning of the array, stop before the last element
for (int i = 0; i < numbers.length - 1; i++)
//Take the number at the next index (i + 1) and store it in the current index (i)
numbers[i] = numbers[i + 1];
//Don't forget about the first number!
numbers[numbers.length - 1] = first;
}
以下代码段应该将数组的内容更改为{0,3,4,2,4}
shift(new int[] {4, 0, 3, 4, 2})
这是一个完整的,可运行的类文件。
import java.util.Arrays;
public class Shift {
public static void main(String[] args) {
int[] numbers = new int[] {4, 0, 3, 4, 2};
shift(numbers);
System.out.println(Arrays.toString(numbers));
}
public static void shift(int[] numbers) {
//Store the first element
int first = numbers[0];
//Start for-loop at the beginning of the array, stop before the last element
for (int i = 0; i < numbers.length - 1; i++)
//Take the number at the next index (i + 1) and store it in the current index (i)
numbers[i] = numbers[i + 1];
//Don't forget about the first number!
numbers[numbers.length - 1] = first;
}
}
要使用名为ArrayList
的{{1}},您可以使用以下代码段:
list
这是因为list.add(list.remove(0));
将返回从数组中删除的对象,因此我们可以将其添加到最后。