java 穷举 0 - 9 之间所有不重复的值

java 穷举 0 - 9 之间所有不重复的值
/* 五、分析以下需求,并用代码实现:
        (1) 打印由 7,8,9 三个数组成的三位数,要求该三位数中任意两位数字不能相同;
        (2) 打印格式最后的三位数字以空格分隔,如 789 798 879 897 978 987。
         注:要求使用 StringBuilder 来完成 */
public class HomeWork05 {    public static void main(String[] args) throws IOException {
//         输入值并简单处理
        Scanner sc = new Scanner(System.in);
        System.out.println(" 请输入起始值 (0~9):");
        int start=sc.nextInt();
        System.out.println(" 请输入结束值 (0~9):");
        int end=sc.nextInt();
        int bound=end-start+1;
        StringBuilder stringBuilder = new StringBuilder();
        HashSet<String> set = new HashSet<>();
        int cout=0;
        Random r = new Random();
        long bCount=boundCount(bound);
        if (bCount>10000){            System.out.println(" 结果数超过 10000 为 "+bCount+" 计算会很慢, 请按任意键继续 ");
            System.in.read();
        }
//         穷举各种可能,小于正确结果个数持续执行   直到达到正确个数
        while (set.size()<bCount) {            int number = r.nextInt(bound) + start;
            if (!stringBuilder.toString().contains(String.valueOf(number))&&stringBuilder.toString().length()<bound){                stringBuilder.append(number);
            }else if (stringBuilder.toString().length()==bound){                set.add(stringBuilder.toString());
                stringBuilder=new StringBuilder();
            }
        }
        List ts = new ArrayList<>(set);
        Collections.sort(ts); // 排序
        System.out.println(" 结果数:"+ts.size());
        System.out.println(ts.toString().replace("[","")
                .replace("]","")
                .replace(","," "));
    }

    /**
     *  计算笛卡尔积运算去重后个数
     * @param bound
     * @return
     */
    public static long boundCount(int bound){
        int sum=1;
        for (int i = 1; i <= bound; i++) {
           sum*=i;
        }
        return sum;
    }
}

手机扫描二维码访问

    本文标题:《java 穷举 0 - 9 之间所有不重复的值》作者:极四维博客
    原文链接:https://cway.top/post/137.html
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

    可在微信查看或分享至朋友圈。

    相关文章

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    «    2025年5月    »
    1234
    567891011
    12131415161718
    19202122232425
    262728293031

    搜索

    控制面板

    您好,欢迎到访网站!
      查看权限

    最新留言

    文章归档

    • 订阅本站的 RSS 2.0 新闻聚合