问个题啊啊啊急急急!!!

 

        int count = 0;
        for (int a = 1; a < 10; a++) {
            for (int b = 1; b < 10; b++) {
                for (int c = 1; c < 10; c++) {
                    for (int d = 1; d < 10; d++) {
                        for (int e = 1; e < 10; e++) {
                            for (int f = 1; f < 10; f++) {
                                for (int g = 1; g < 10; g++) {
                                    for (int h = 1; h < 10; h++) {
                                        for (int i = 1; i < 10; i++) {
                                            Set<Integer> set = new HashSet<>();
                                            set.add(a);
                                            set.add(b);
                                            set.add(c);
                                            set.add(d);
                                            set.add(e);
                                            set.add(f);
                                            set.add(g);
                                            set.add(h);
                                            set.add(i);
                                            if (set.size() == 9
                                                    && Integer.parseInt((a + "" + b + c)) + Integer.parseInt((d + "" + e + f)) == Integer.parseInt((g + "" + h + i))) {
                                                 System.out.println((a + "" + b + c) + " + " + (d + "" + e + f) + " = " + (g + "" + h + i));
                                                 count += 1;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }

先这样将就一下吧,后面看看有什么优雅的方案;别用这个,不好

可以看下这个

    public static void main(String[] args) {
        int count = 0;
        for (int a = 111; a < 999; a++){
            for (int b = 111; b < 999; b++){
                String str = a + "" + b;
                String strSum = a + b + "";
                str = str + strSum;
                int size = getSize(str);
                if (size == 9 && strSum.length() == 3 &&  a + b == Integer.parseInt(strSum)){
                    System.out.println(a + " + " + b + " = " + strSum);
                    count ++;
                }
            }
        }
        System.out.println("一共有 " + count + " 种可能");
    }
    public static int getSize(String str){
        Set<String> set = new HashSet<>();
        for (int a = 0; a < str.length(); a++){
           set.add(str.substring(a, a + 1));
        }
        set.remove("0");
        return set.size();
    }

 

 

public static void main(String[] args) {
    for (int j = 0; j < 10000; j++) {
        ArrayList<Integer> integers = new ArrayList<>();
        for (int i = 1; i <= 9; i++) {
            integers.add(i);
        }
        int a = 0, b = 0, c = 0;

        for (int i = 0; i < 3; i++) {
            a = getA(integers, a, i);
            b = getA(integers, b, i);
            c = getA(integers, c, i);
        }


        if (a+b ==c){
            System.out.println(a +" + "+b+" = "+c);
            System.out.println("------------------");
        }
    }
}

private static int getA(ArrayList<Integer> integers, int a, int i) {
    Random random = new Random();
    int n = random.nextInt(integers.size());
    Integer integer = integers.get(n);
    integers.remove(integer);
    a += (integer * Math.pow(10, i));
    return a;
}
public class ElevenTest {
    public static void main(String[] args) {
        List<Integer> list = null;
        for (int i = 123; i <=  543; i++) {
            for (int j = 456; j <= 876 ; j++) {
                list = new ArrayList<>();
                if(j == i){
                    continue;
                }
                int sum = i + j;
                if(sum >= 999){
                    break;
                }
                if(String.valueOf(i).contains("0") ||
                   String.valueOf(j).contains("0") ||
                   String.valueOf(sum).contains("0")
                ){
                    continue;
                }
                getNum(i,list);
                getNum(j,list);
                getNum(sum,list);
                if(list.contains(0)){
                    continue;
                }
                if(list.size() == 9){
                    System.out.println(i + " + " + j + " = " + sum);
                    break;
                }

            }
        }
    }

    public static void getNum(Integer num,List<Integer> list){
        addNum(num % 10,list);
        addNum(num /10 % 10,list);
        addNum(num / 100,list);
    }

    public static void addNum(Integer num,List<Integer> list){
        if(!list.contains(num)){
            list.add(num);
        }
    }

}

124 + 659 = 783
125 + 739 = 864
129 + 654 = 783
134 + 658 = 792
135 + 729 = 864
138 + 654 = 792
139 + 725 = 864
142 + 596 = 738
143 + 586 = 729
145 + 692 = 837
146 + 583 = 729
152 + 487 = 639
154 + 629 = 783
157 + 482 = 639
158 + 634 = 792
159 + 624 = 783
162 + 783 = 945
163 + 782 = 945
182 + 457 = 639
183 + 492 = 675
184 + 752 = 936
186 + 543 = 729
192 + 483 = 675
193 + 482 = 675
195 + 642 = 837
196 + 542 = 738
214 + 569 = 783
215 + 478 = 693
216 + 738 = 954
218 + 475 = 693
219 + 564 = 783
234 + 657 = 891
235 + 746 = 981
236 + 718 = 954
237 + 654 = 891
238 + 716 = 954
241 + 596 = 837
243 + 576 = 819
245 + 673 = 918
246 + 573 = 819
248 + 715 = 963
254 + 619 = 873
257 + 634 = 891
259 + 614 = 873
264 + 519 = 783
269 + 514 = 783
271 + 593 = 864
273 + 546 = 819
275 + 643 = 918
276 + 543 = 819
281 + 673 = 954
283 + 671 = 954
291 + 546 = 837
293 + 571 = 864
296 + 541 = 837
314 + 658 = 972
317 + 529 = 846
318 + 627 = 945
319 + 527 = 846
324 + 567 = 891
327 + 519 = 846
328 + 617 = 945
329 + 517 = 846
341 + 586 = 927
342 + 576 = 918
346 + 572 = 918
352 + 467 = 819
354 + 618 = 972
357 + 462 = 819
358 + 614 = 972
362 + 457 = 819
364 + 527 = 891
367 + 524 = 891
372 + 546 = 918
376 + 542 = 918
381 + 546 = 927
386 + 541 = 927

public static void main(String[] args) {
        boolean ifok = false;
        for(int a = 899; a >=100 ; a--) {
            for(int b = 100; b <= 899 ; b++) {
                Set setA = new HashSet<>();
                addToSet(setA, a);
                addToSet(setA, b);
                if (setA.size() != 6 || setA.contains('0')) {
                    continue;
                }
                // 等于6的时候说明a 和 b 都不重复了,计算他们的和
                int c = a + b;
                if (c > 999) {
                    break;
                }
                addToSet(setA, c);
                if (setA.size() != 9 || setA.contains('0')) {
                    continue;
                }else {
                    System.out.println(a + " + " + b + " = " + (a+b));
                    ifok = true;
                }
            }
            if (ifok) {
                break;
            }
        }
    }
    
    public static void addToSet(Set setA, int value) {
        String aStr = String.valueOf(value);//数字转为字符串
        char[] aArray = aStr.toCharArray();//字符串转字符数组
        for (char c : aArray) {//字符放入set中
            setA.add(c);
        }
    }

 

784 + 152 = 936

 

public static void main(String[] args) {
    //随机数
    Random random = new Random();
    while ( true ) {
        //搞个1-9集合,用来组成3个三位数
        List<Integer> num = new ArrayList();
        num.add(1);
        num.add(2);
        num.add(3);
        num.add(4);
        num.add(5);
        num.add(6);
        num.add(7);
        num.add(8);
        num.add(9);

        //整仨变量,组成三个三位数
        String one = "";
        String two = "";
        String total = "";

        while ( num.size() != 0 ) {
            //分别组成三个三位数,每次删掉集合中对应随机数的下标值
            int r = random.nextInt( num.size() );
            one += num.get(r);
            num.remove(r);

            int rr = random.nextInt( num.size() );
            two += num.get(rr);
            num.remove(rr);

            int rrr = random.nextInt( num.size() );
            total += num.get(rrr);
            num.remove(rrr);
        }

        //判断等式是否相等
        if ( Integer.parseInt(one) + Integer.parseInt(two) == Integer.parseInt(total) ) {
            System.out.println( one + "+" + two + "=" + total + "----------" + "等式成立,程序结束" );
            break;
        }
        System.out.println( one + "+" + two + "=" + total + "----------" + "等式不成立" );
    }
}

随便写了一个~