如何for循环或while循环设置这样的数字

时间:2014-08-08 01:57:03

标签: java for-loop

我想循环一组数字并改变它们在每一行的位置。它读取一系列整数(最多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

任何人都可以教我如何处理它吗?提前致谢。

2 个答案:

答案 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)); 将返回从数组中删除的对象,因此我们可以将其添加到最后。