- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA编程风格建议
JAVA编程风格建议
学会分解问题
学会分解问题,不管你是在面向过程还是面向对象。其实,面向过程和面向对象,对程序员来说没有什么具体的含义。因为,当你真正分解完问题,自然会知道哪部分是面向过程的,哪部分用面向对象来做简单。
举个例子来说明怎么分解问题。而不是在问题一产生的时候,就尝试解决它。
1、在一条街上,有5座房子,喷了5种颜色。
2、每个房里住着不同国籍的人
3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物
问题是:谁养鱼?
提示:
1、英国人住红色房子
2、瑞典人养狗
3、丹麦人喝茶
4、绿色房子在白色房子左面
5、绿色房子主人喝咖啡
6、抽Pall Mall 香烟的人养鸟
7、黄色房子主人抽Dunhill 香烟
8、住在中间房子的人喝牛奶
9、 挪威人住第一间房
10、抽Blends香烟的人住在养猫的人隔壁
11、养马的人住抽Dunhill 香烟的人隔壁
12、抽Blue Master的人喝啤酒
13、德国人抽Prince香烟
14、挪威人住蓝色房子隔壁
15、抽Blends香烟的人有一个喝水的邻居
现在我们考虑如何编程解决这个问题。1穷举法。2人工智能寻道法。
后面的就不是编程的基础技能了,我们这里用穷举法。
穷举法就是我们把所有的可能的情况都考虑过一遍。
看题目。我们知道每个人有不同的房子(第0间,第1间……) 每个人住不同颜色的房子(白,红,绿,黄,蓝)有不同的国籍(英国,瑞典,丹麦,挪威,德国)不同的饮料,不同的香烟,不同的宠物。
而题目中的情况就是把5个人,各种住不同房子,有不同国籍的情况分布一遍。
而检验这个情况是否合理,就是后面的16个条件的检查。
于是我们现在分2步,1产生所有的情况,2检验情况
先补充基础类
/**
* 个人情况
*/
public class Man {
// 为了简化编程这里没有限定访问权限。统统本包内能访问
int position;
Color color;
Country contry;
Drink drink;
Cigarette cigarette;
Pet pet;
}
enum Color {
WHITE, Red, GREEN, YELLOW, BLUE;
}
enum Country {
ENGLISH, SWEDEN, DENMARK, NORWAY, GERMANY;
}
enum Drink {
TEE, COFFEE, MILK, BEER, WARTER;
}
enum Cigarette {
PALL_MALL, DUNHILL, BLENDS, BLUE_MASTER, PRINCE;
}
enum Pet {
DOG, BIRD, CAT, HORSE, FISH;
}
/**
* 案例
*/
public class Case {
Man[] men;
public Case() {
men = new Man[5];
for (int i = 0; i men.length; i++) {
men[i]=new Man();
men[i].position = i;
}
}
} 有了基础数据。的定义我们就可以开始做第一步了。列举所有的Case
/**
* 我们还需要一个主函数完成我们的穷举
*/
public class Main {
public static void main(String[] args) {
goThroughAllCases();
}
/**
* 检验全部case
*/
static void goThroughAllCases() {
}
/**
* 结合条件判断是否通过
* @param c
* @return
*/
static boolean checkCase(Case c){
return false;
}
}
先不急得实现。我们已经把上述的问题分解到如此。
我们需要的只是完成3个方法,一个可以把所有case统统枚举一遍。一个验证这个case是否能通过那16个条件验证。然后再加入一个输出这个case的情况的方法。
输出case情况我们可以列用类本身的toString所以我们只剩下2个问题要考虑。
其中checkCase已经很明显了,如:
英国人住红色房子
那么就是找这个case中英国人是那号房子,找到这个case中红色房子是哪号房子。对比是否相等。
按顺序把16个条件表达完整即可。同时注意。找人所在的房子号,可以写成一个子程序。或者直接把他封装到case类里面 剩下一个比较大问题就是。如何列举出所有Case
按排列组合的理论。
您可能关注的文档
最近下载
- 2025北京北化生物科技有限公司招聘9人备考题库及答案解析(名师系列).docx VIP
- 烟花爆竹零售安全课件.ppt VIP
- 嘧啶类BTK抑制剂的创新制备及抗慢性B淋巴细胞白血病的药理活性探究.docx
- 四川省大数据智学领航联盟2026届高三第一次教学质量联合测评物理试题(含答案).pdf
- 2025北京北化生物科技有限公司招聘9人备考试题附答案解析.docx VIP
- 2026年高考语文一轮复习信息类文本阅读:信息类文本阅读潜在的命题视角.pptx VIP
- 6西格玛绿带培训课件.ppt VIP
- 2025年渭南澄城县婴幼儿照护服务中心招聘备考题库(3人)附答案.docx VIP
- 2025北京北化生物科技有限公司招聘9人历年参考试题带答案解析.docx VIP
- 办公室安全用电隐患排查.docx VIP
原创力文档


文档评论(0)