Java for循环,值会跳转

时间:2018-11-12 18:52:47

标签: java for-loop

如果我有三个变量,并且希望for循环中的值从一个跳到下一个,我该怎么做?您可以假设第一个变量是最小的,而第三个变量是最大的,并且变量不相等(尽管如果有一种方法可以在相等的情况下做到这一点,那将是不错的选择)。

我有一个例子说明它是否只有两个值。

int val1 = 5;
int val2 = 9;
for(int i = val1; i <= val2; i=i+(val2-val1) {
}

在这种情况下,i首先是5,然后是9。此外,是否有其他方法可以使用不同数量的变量呢?

4 个答案:

答案 0 :(得分:2)

我不确定100%是否能理解您的问题,但是您可以做到

for(int i = val1; i <= val2; i = (i == val1) ? val2 : val2+1) {
    // ...
}

如果您需要更多的值,可以将它们放在数组中并在其上使用for-each循环

int[] vals = {5,9,17};
for (int i : vals) {
    // ...
}

答案 1 :(得分:1)

您可以将它们放置在数组中,并通过索引对其进行访问

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        int[] myArray = {4, 6 , 9};
        for(int x : myArray)
        {
            System.out.println(x);
        }
        //or....

        for(int x =0; x<3; x++)
        {
            System.out.println(myArray[x]);
        }
    }
}

答案 2 :(得分:0)

正如@Gonen所说,您可以使用8082处理此问题。如果要“ ...第一个变量是最小的,而第三个变量是最大...”,则应使用stream来获取排序后的值。

stream.sorted()对应于遍历时x列表中的每个元素。因此,您可以使用vals

forEach块中执行所需的任何操作
x

答案 3 :(得分:0)

如果我们已经有点傻了,这将为您提供所需的任意数量的技巧,并且可以在for循环内进行。但是我永远不会写这样的代码,因为它完全不可读:

package package1;

public class SillySkip {

    public static void main(String[] args) {
        for( int data[] = {5,10,-4}, i, j=0; j < data.length && (i = data[j]) % 1 == 0 ; ++j )
        {
            System.out.println(i);
        }
    }

}

从Java 8起,您可以使用Stream.of迭代任意值,如下所示:

package package1;

import java.util.stream.Stream;

    public class IterateSomeValues {

        public static void main(String[] args) {
            Stream.of(5,10,-4).forEach(e->System.out.println(e));
        }

    }