首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java循环未达到停止条件程序结束

Java循环未达到停止条件程序结束
EN

Stack Overflow用户
提问于 2017-06-15 03:57:57
回答 2查看 144关注 0票数 0

程序调用来自另一个类的方法,这有助于更改我的程序的停止条件。它平均调用该方法约3-8次,永远不会达到停止条件,但它会停止。

代码语言:javascript
复制
    public class useExample
    {
     public static void main(String[] args)
     {

       Example ex = new Example();
       long [] result;

       long a = 0;
       long b = 0;
       long c = 0;
       long d = 0;
       long e = 0;
       int count = 0;

       int a1 = 1;
       int b1 = 2;
       int c1 = 3;
       int d1 = 4;
       int e1 = 5;


      for(int i = 0; i <1; i++)
      {
        while(a != a1 && b != b1 && c != c1 && d != d1 && e != e1)
        {
          result = ex.getOnes();
          a = result[0];
          b = result[1];
          c = result[2];
          d = result[3];
          e = result[4];

          System.out.println(result[0] + " " + result[1] + " " + result[2] + " " + result[3] + " " + result[4]);

        System.out.println(a + " " + b + " " + c + " " + d + " " + e + " " + count++);

        }
       System.out.println(a + " " + b + " " + c + " " + d + " " + e + " "+ count);

      }



     }
   }

示例类如下所示:

代码语言:javascript
复制
import java.util.*;

public class Example 
{
  Random r = new Random();

    public long[] getOnes(){

        int a = r.nextInt(35);
        int b = r.nextInt(35);
        int c = r.nextInt(35);
        int d = r.nextInt(35);
        int e = r.nextInt(35);

        while(a == 0)
        {
            a = r.nextInt(35);
            //temp[0] = a;
        }

        while(b == 0 || b == a /*|| b == c || b == d || b == e*/)
        {
            b = r.nextInt(35);
            //temp[1] = b;
        }

        while(c == 0 || c == a || c == b /*|| c == d || c == e*/)
        {
            c = r.nextInt(35);
            //temp[2] = c;
        }

        while(d == 0 || d == a || d == b || d == c/*|| d == e*/)
        {
            d = r.nextInt(35);
            //temp[3] = d;
        }

        while(e == 0 || e == a || e == b || e == c|| e == d)
        {
            e = r.nextInt(35);
            //temp[4] = e;
        }

        return new long[] {a, b, c, d, e};
    }

}

仅当while的每个条件为false.This时,useExample类的while循环才会停止,这意味着:

代码语言:javascript
复制
a == a1
b == b1 
c == c1 
d == d1 
e == e1

它应该输出它经历了多少个while循环以及每个循环的值。最终将相同的a1值输出到e1。

EN

回答 2

Stack Overflow用户

发布于 2017-06-15 04:18:47

仅当while的每个条件为false.This时,useExample类的while循环才会停止:

A == a1 b == b1 c == c1 d == d1 e == e1

那么你的while循环现在就错了,应该是这样的:

代码语言:javascript
复制
while (a != a1 || b != b1 || c != c1 || d != d1 || e != e1)

因为while包含的条件不是when to stop而是when to continue

票数 1
EN

Stack Overflow用户

发布于 2017-06-15 04:22:14

只要满足其中一个条件,while循环就会结束。如果希望满足所有条件,请使用||而不是&&。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44553675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档