如果我有三个变量,并且希望for循环中的值从一个跳到下一个,我该怎么做?您可以假设第一个变量是最小的,而第三个变量是最大的,并且变量不相等(尽管如果有一种方法可以在相等的情况下做到这一点,那将是不错的选择)。
我有一个例子说明它是否只有两个值。
int val1 = 5;
int val2 = 9;
for(int i = val1; i <= val2; i=i+(val2-val1) {
}
在这种情况下,i
首先是5,然后是9。此外,是否有其他方法可以使用不同数量的变量呢?
答案 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));
}
}