【Java】 Thinking in Java 4.8 练习10 吸血鬼数字

题目:

吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。

 以两个0结尾的数字是不允许的。写一个程序,找出4位数中所有吸血鬼数字。

方法一:

 1     public static void main(String[] args) {
 2         outer: for (int i = 10; i <= 99; i++) {
 3             for (int j = i + 1; j <= 99; j++) {
 4                 int sum = i * j;
 5                 if (sum <= 9999 && sum >= 1000) {
 6                     String[] t1 = (sum + "").split("");
 7                     Arrays.sort(t1);
 8                     String[] t2 = ("" + i + j).split("");
 9                     Arrays.sort(t2);
10                     if (Arrays.equals(t1, t2)) {
11                         System.out.println(i + "*" + j + "=" + sum);
12                     }
13                     break outer;
14                 }
15             }
16         }
17     }

方法二:

 1 public static void main(String[] args) {
 2         ArrayList<Integer> list = new ArrayList<Integer>(); // 提高效率所引用线性表
 3         ArrayList<Integer> result = new ArrayList<Integer>(); // 防止结果集重复
 4         boolean test = true;
 5         boolean flag = false;
 6         for (int i = 11; i < 99; i++)
 7             for (int j = (1000 / i) + 1; j < 99; j++) {
 8                 list.clear();
 9                 String str1 = new Integer(i * j).toString(); // 相乘后
10                 String str2 = String.valueOf(i) + String.valueOf(j);
11                 for (int m = 0; m < 4; m++) {
12                     for (int n = 0; n < 4; n++) {
13                         test = true;
14                         for (int x = 0; x < list.size(); x++)
15                             if (n == list.get(x))
16                                 test = false; // 如果表中存在索引
17                         if (test == false)
18                             continue;
19                         if (str1.charAt(m) == str2.charAt(n)) {
20                             list.add(n);
21                             break;
22                         }
23                     }
24                 }
25                 if (list.size() == 4) {
26                     flag = true;
27                     for (int count = 0; count < result.size(); count++) {
28                         if (result.get(count) == i * j) {
29                             flag = false;
30                         }
31                     }
32                     if (flag != false) {
33                         System.out.println(i * j + "=" + i + "*" + j);
34                         result.add(i * j);
35                     }
36                 }
37             }
38     }

【Java】 Thinking in Java 4.8 练习10 吸血鬼数字,布布扣,bubuko.com

时间: 2024-10-18 22:56:41

【Java】 Thinking in Java 4.8 练习10 吸血鬼数字的相关文章

《java编程思想》读后笔记:二,吸血鬼数字

书本p75中一道读后练习思考题,题目如下: 吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘得到,而这对数字各包含成绩的一半位数的数字,其中从最初的数字中选取的数字可以任意排序.一两个0结尾的数字是不允许的,例如,下列数字都是"吸血鬼数字": 1260=21*60,1827=21*87,2187=27*81 写一个程序,找出4位数的所有吸血鬼数字. 个人代码: public static void main(String[] args) { Map<String,String&

java循环练习:用户输入一个10以内的数字,通过运算求出该数字的阶乘

package practiceGO; import java.util.Scanner; /*  * 4.用户输入一个10以内的数字,通过运算求出该数字的阶乘  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个10以内的数字,由系统计算阶乘"); int num = sc.nextIn

Java的Exception和Error面试题10问10答

在Java核心知识的面试中,你总能碰到关于 处理Exception和Error的面试题.Exception处理是Java应用开发中一个非常重要的方面,也是编写强健而稳定的Java程序的关键,这自然使它成为面试题中的常客.关于Java中Error和Exception的面试题目多是关于Exception和Error的概念,如何处理Exception,以及 处理Exception时需要遵守的最佳实践等等.尽管关于多线程.垃圾回收.JVM概念和面向对象设计等方面的问题依然主宰着这类面试,你仍然需要为回答

第10篇-JAVA 集合框架-JAVA 泛型

第10篇-JAVA 集合框架-JAVA 泛型 每篇一句 :所有的不甘,都是因为还心存梦想 初学心得: 不是每件事都注定会成功,但是每件事都值得一试 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-15| JAVA 集合框架/JAVA 泛型 ] 1.JAVA 集合框架概念 通俗的说,集合就是一个存放数据的容器,准确的说,就是放数据对象引用的容器 数组和集合都是容器,有何不同? 数组长度固定,集合长度可变 数组只能存放相同类型的数据,集合可以存放不同类型的数据 数组可存放简单数据

java使用线程请求访问每次间隔10分钟连续5次,之后停止请求

java使用线程请求访问每次间隔10分钟连续5次,收到相应的时候停止请求 package com.qlwb.business.util; /** * * * @类编号: * @类名称:RequestTask * @内容摘要: 若开发者发出了回调通知,却没有收到兑吧ok响应时,开发者需重试5次,每次间隔10分钟. * @author:鹿伟伟 * @创建日期:2016年4月15日 下午4:25:20 * @修改人: * @修改日期: * @修改描述:简单描述修改的内容 * @version 1.0.

java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect

在使用GENYMOTION作为Android程序调试模拟器连接web服务器时,报了:java.net.ConnectException: failed to connect to /10.0.2.2 (port 80): connect 解决方法:使用genymotion进行调试时,不能使用10.0.2.2进行调试,而必须使用电脑主机的ip地址,类似于模拟器是通过wifi连接到主机. 使用ipconfig获得ip地址,在使用IP地址连接即可.

Java开发者写SQL时常犯的10个错误

首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - iOS - Python - Android - Web前端 Java开发者写SQL时常犯的10个错误 2015/03/10 | 分类: 基础技术 | 0 条评论 | 标签: SQL 分享到:0 本文由 ImportNew - zer0Black 翻译自 jooq.欢迎加入翻译小组.转载请见文末要求. 我十分惊讶的

Java发展史之Java由来

Java:由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称.Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林(James Gosling)等人于1990年代初开发,它最初被命名为Oak.Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言. Java从第一个版本诞生到现在已经有十九年的时间了.时间若白驹过隙,转瞬即逝.弹指间19年过去了,在下图所展示的时间线中,我们看到JDK已经

【转】Predicate和Consumer接口– Java 8中java.util.function包下的接口

原文链接 http://ifeve.com/predicate-and-consumer-interface-in-java-util-function-package-in-java-8/ 原文链接 作者:   Mohamed Sanaulla  译者: 李璟([email protected]) 早先我写了一篇<函数式接口>,探讨了部分Java 8中函数式接口的用法.我也提及了Predicate接口属于java.util.function包, 在这篇文章中,我将展示如何应用Predicat