是java啊 是不会啊 难受

蓝有很多数字卡片,每张卡片上都是数字0到9。
小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个,就保存起水,卡片就不能用来拼其它数了。
小蓝想知道自己能从1拼到多少

很多是多少?无限吗?

卡片数自己改num值就可以了,也可以用Scanner手动输入

package com;

import java.util.LinkedList;
import java.util.List;

public class Text {
    public static void main(String[] args) {
        //定义卡片数
        int num = 50;
        System.out.println("卡片数量:"+num);
        List list = new LinkedList();
        for(int i=0;i<num;i++){
            for(int j=0;j<=9;j++){
                list.add(j);
            }
        }

        System.out.print("卡片中包含的数字:");
        for(int i=0;i<list.size();i++){
            if(i%50==0){
                System.out.println();
            }
            System.out.print(list.get(i)+" ");
        }
        System.out.println("\n\n以上数字可拼出的数字:");
        for(int i=0;i>=0;i++){
            int a1 = 0;
            int a2 = 0;
            int a3 = 0;
            if(i>=10){
                if(i>=100){
                    a1 = i/100;
                    a2 = i%100/10;
                    a3 = i%10;
                    boolean text1 = fnd(a1,list);
                    if(!text1){
                        System.out.print("拼"+(a1*100+a2*10+a3)+"缺"+a1);
                        break;
                    }
                    boolean text2 = fnd(a2,list);
                    if(!text2){
                        System.out.print("拼"+(a1*100+a2*10+a3)+"缺"+a2);
                        break;
                    }
                    boolean text3 = fnd(a3,list);
                    if(!text3){
                        System.out.print("拼"+(a1*100+a2*10+a3)+"缺"+a3);
                        break;
                    }
                    System.out.print(a1*100+a2*10+a3+" ");
                    if((a1*100+a2*10+a3)%50==0){
                        System.out.println();
                    }
                }else{
                    a1 = i/10;
                    a2 = i%10;
                    boolean text1 = fnd(a1,list);
                    if(!text1){
                        System.out.print("拼"+(a1*10+a2)+"缺"+a1);
                        break;
                    }
                    boolean text2 = fnd(a2,list);
                    if(!text2){
                        System.out.print("拼"+(a1*10+a2)+"缺"+a2);
                        break;
                    }
                    System.out.print(a1*10+a2+" ");
                    if((a1*10+a2)%50==0){
                        System.out.println();
                    }
                }
            }else{
                a1 = i;
                boolean text1 = fnd(a1,list);
                if(!text1){
                    System.out.print("拼"+a1+"缺"+a1);
                    break;
                }
                System.out.print(a1+" ");
            }
        }


        System.out.print("\n\n剩余数字:");
        for(int i=0;i<list.size();i++){
            if(i%50==0){
                System.out.println();
            }
            System.out.print(list.get(i)+" ");
        }
    }
    public static boolean fnd(int a, List list){
        int ps = -1;
        boolean bo = true;
        for(int i=0;i< list.size();i++){
            if(a==(int)list.get(i)){
                ps = i;
            }
        }
        if(ps>=0){
            list.remove(ps);
        }else{
            bo = false;
        }
        return bo;
    }
}

img