当Loop不确定地运行并且没有给出正确的输出时

时间:2019-10-24 01:09:13

标签: java

我只是从Java 8开始,所以请原谅我可怕的代码。经过数小时的尝试后,我仍然没有得到任何实际结果。

给定的问题是:

  

ABC + DBE = EFF

     

减负减

     

DEG + FFA = HFI

     

等于等于等于

     

CBI + FED = DEJ

我需要找到所有对应的数字并通过简单地尝试数字来求解所有方程。我只能将While-Loops用于此任务。

这是我想出的代码:

public static void main(String args[]) {

    int a = 0;
    while (a < 10) {

        int b = 0;
        while (b < 10) {

            int c = 0;
            while (c < 10) {

            int abc = a * 100 + b * 10 + c;

                int d = 0;
                while (d < 10) {

                    int e = 0;
                    while (e < 10) {

                    int dbe = d * 100 + b * 10 + e;

                        int f = 0;
                        while (f < 10) {    

                        int eff = e * 100 + f * 10 + f;

                            int g = 0;
                            while (g < 10) {

                            int deg = d * 100 + e * 10 + g;

                                int ffa = f * 100 + f * 10 + a;

                                    int h = 0;
                                    while (h < 10) {

                                        int i = 0;
                                        while (i < 10) {

                                        int hfi = h * 100 + f * 10 + i;

                                        int cbi = c * 100 + b * 10 + i;

                                        int fed = f * 100 + e * 10 + d;

                                        int j = 0;
                                        while (j < 10) {

                                        int dej = d * 100 + e * 10 + j;

                                            if (abc + dbe == eff &&
                                                deg + ffa == hfi &&
                                                cbi + fed == dej &&
                                                abc - deg == cbi &&
                                                dbe - ffa == fed &&
                                                eff - hfi == dej) {


                                                 System.out.println(abc);
                                                 System.out.println(dbe);
                                                 System.out.println(eff);
                                                 System.out.println(deg);
                                                 System.out.println(ffa);
                                                 System.out.println(hfi);
                                                 System.out.println(cbi);
                                                 System.out.println(fed);
                                                 System.out.println(dej);
                                                }
                                            }
                                            j++;
                                        }
                                        i++;            
                                    }
                                    h++;
                                }   
                                g++;
                            }
                            f++;  
                        }
                        e++; 
                    }
                    d++; 
                }
                c++;
            }
            b++;
        }
        a++;
    }
}

我希望程序输出组合数字的值(即abc,dbe,...),而不是程序输出看似随机数的永无止境的流。

您能帮我找到可行的解决方案吗?

1 个答案:

答案 0 :(得分:1)

j++while (j < 10) {循环之外,因此它将永远持续下去。其他所有增量都相同。

同样在所有情况下,所有值均为zero,因此等于

输出(去掉零)

602
309
911
398
116
514
204
193
397