使用外部循环值

时间:2011-04-12 03:28:50

标签: java for-loop if-statement

public class randomdemo {
    public static void main(String[] args)
    {
        Random rand = new Random();
        int [] varArray = new int[rand.nextInt(10)];

        System.out.println(varArray.length);
        int d = rand.nextInt(1999)-1000;
        for (int i=0;i<varArray.length;i++)
        {
            varArray[i]= rand.nextInt(1999)-1000;
            System.out.println(varArray[i]);

            if(d==varArray[i])
            {
                System.out.println(d);      
                System.out.println(i+1);
            }
            else
            { 
                System.out.println(d);
                System.out.println(0);
            }
        }
    }
}

代码中的问题:

它多次执行if-else语句,并且因为它处于for循环中而多次显示if-else输出。 代码应该只执行一次if-else语句,但for循环的其余部分应该多次执行。 由于if语句使用varArray[i]的值,因此我无法从for循环中排除代码。 使用break语句时,它将终止for循环。并且不显示完整的输出。

输出:目前

7 -710 -249 0 -693 -249 0 172 -249 0 -488 -249 0 -48 -249 0 955 -249 0 869 -249 0

如您所见,数组的长度为7 它在循环中显示数组元素,然后显示变量d和值0的值。

预期产出:

7 -710 -693 172 -488 -48 955 869 -249 0

具有7个元素的数组的输出应为7个数组值,后跟变量d和0。

3 个答案:

答案 0 :(得分:0)

请确定您想要执行if-else的确切方案,并在现有的if-else条件中进行更改,以便它在循环中只执行一次。或者你可以将现有的if-else包装在其他if-else中,其条件可以是你必须执行内部if-else的场景。

例如:假设场景仅适用于i的特定值(例如,当i = 10时),您想要执行循环。请修改代码,如下所示。

if(i==10){
 if(d==varArray[i])
            {
                System.out.println(d);      
                System.out.println(i+1);
            }
            else
            { 
                System.out.println(d);
                System.out.println(0);
            }

}

答案 1 :(得分:0)

可能您可以设置一个布尔标志来跟踪if else代码的执行情况。请参阅下面的代码。

    boolean flag = false;  // flag to track the if else

    System.out.println(varArray.length);
    int d = rand.nextInt(1999)-1000;
    for (int i=0;i<varArray.length;i++)
    { 
      ...
       if(!flag){
        if(d==varArray[i])
        {
            flag =true;
            System.out.println(d);      
            System.out.println(i+1);
        }
        else
        { 
             flag =true;
            System.out.println(d);
            System.out.println(0);
        }
       }

答案 2 :(得分:0)

试试这个。

public class randomdemo {

    public static void main(String[] args) {
        Random rand = new Random();
        int[] varArray = new int[rand.nextInt(10)];

        System.out.println(varArray.length);
        int d = rand.nextInt(1999) - 1000;
        int foundIdx = -1; // mark index if you find one!
        for (int i = 0; i < varArray.length; i++) {
            varArray[i] = rand.nextInt(1999) - 1000;
            System.out.println(varArray[i]);

            if (d == varArray[i]) {
                foundIdx = i + 1; // only the last match is saved
            }
        }
        if (foundIdx != -1) {
            System.out.println(d);
            System.out.println(foundIdx);
        } else {
            System.out.println(d);
            System.out.println(0);
        }
    }
}