实训总结(三)
来源:互联网 发布:淘宝联盟分享优惠券 编辑:程序博客网 时间:2024/06/05 18:43
如果你需要理由去放弃现在的学习,那么你就要想下你的信念和追求是什么,也许你就能找打正确的学习方法和方向
关于实训第二天的总结
关于java中简单的控制语句的实现
今天的实训内容依然是逻辑的思考和方法的使用,比如说“水仙花数” 和杨辉三角的实现,
这些都是比较有意思的,因为在这里面有很多值得我们注意的地方,
比如说,水仙花数的命名规范和杨奎三角的打印格式,这些都是需要按照规定的要求去实现的,
实现代码一般都会有自己命名的行列的数字控制,其实这些都是业务的一种简单的实现吧,网上代码很多,我就放最主要的来说明下
for(int i=0;i<n;i++){ arr[i]=new int [i+1]; for(int j=0;j<=i;j++){ if (j==0||i==j) { arr[i][j]=1; // System.out.println(arr[i][j]+"\t"); } else{ arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; } System.out.print(arr[i][j]+"\t"); } System.out.println(); }
在这个语句中首先把二维数组转换成一位数组组,然后去计算中间不确定值,最后汇总,这也是简化的一种好的方法实现吧
,当然从这个简单的例子里,我了解了更深一步的语句控制的规则,都是在运行着现实中的一些现象,这个其实就是一种队列的实现方式,也许在整理自己的队伍或者去其他的规范中
应该用到这种思想吧
用一个小游戏来深化面向对象的思想
猜拳游戏在生活中依然是很常见的判断方式,在游戏中我们也可以实现这个逻辑,我们可以创建我们需要的逻辑对象,在这个游戏中,主要实现的逻辑,就是简单的判断,这个游戏在很多的实现方式都有用到,而这里要写的是简单的实现
首先是简单软件的分析,猜拳需要的对象有三个人,电脑,和游戏,我们可以设置三个类去实现抽象,然后定义方法去实现逻辑,首先是人需要输入,所以使用到Sanner这个类,然后电脑玩家需要用到的是Random对象产生随机数,在开始的时候我使用的是简单的思维逻辑、
就是运用枚举的方式
代码如下:
import java.util.Random;/** * @version * @author lxh * * 运用枚举去产生随机数 */public class Enums { private static Random rand=new Random(47); public static <T extends Enum<T>>T random(Class<T> ec){ return random(ec.getEnumConstants()); } public static <T>T random(T[] values){ return values[rand.nextInt(values.length)]; }}/*** 求石头剪刀布的简单随机**/import java.util.Random;@SuppressWarnings("unused")enum open{ 石头,剪刀,布 }public class ComputerNumber { public static void main(String[] args) { for(int n=0;n<1;n++){ System.out.print(Enums.random(open.class)+" "); } }}
后来在老师的指导下,使用的是数字的简单代替和更换,这样的话逻辑也会更加的清晰,当然这样能够类与类之间
的耦合度降低了不少,我只简单的写成这样
import java.util.Scanner;public class Game { User user = null; Computer c = null; String[] player = { "", "小明", "小鱼", "小林" }; String[] quans = { "", "石头", "剪刀", "布" }; public void init() { user = new User(); System.out.println("----------Game Start----------"); System.out.println("请输入玩家名字1.小明 2.小鱼 3.小林"); Scanner scanner = new Scanner(System.in); int i = scanner.nextInt(); c = new Computer(); c.name = player[i]; startGame(); } public void startGame() { int resutl1 = user.chuquan(); int result2 = c.chuquan(); System.out.println("你出的" + quans[resutl1] + " 电脑玩家" + c.name + "出的是" + quans[result2]); if (resutl1 == result2) { System.out.println("平局"); } else { if ((resutl1 == 1 && result2 == 3) || (resutl1 == 2 && result2 == 1) || (resutl1 == 3 && result2 == 2)) { System.out.println("you win"); } else { System.out.println("you lost"); } } } public static void main(String[] args) { Game game=new Game(); game.init(); }}
这样就简单了不少,而且使用了数组的简单应用节约了内存空间,当然最主要的是在练习中能够学会传值和赋值的运用
总结
在今天让我学到最好的就是对逻辑的思考,以前只在意的是如何去实现,然后忘了一个思考的过程,而现在有时间静下心来慢慢整理零碎的知识点也是对自己的一种进步的一种督促吧,在接下来的时间里,我希望用我的笔记录更多的学习和生活的思考,也许以后能够在这里寻找更好的解决方案吧,毕竟万变不离其中。
- 实训总结(三)
- 总结篇(三)
- DRP总结(三)
- jQuery总结(三)
- jquery总结(三)
- 多线程总结(三)
- Vim总结(三)
- Hibernate总结(三)
- JavaScript+总结(三)
- GCD总结(三)
- GCD总结(三)
- JSP总结(三)
- IO总结(三)
- Servlet总结(三)
- SQL总结(三)
- Hibernate总结(三)
- tolua总结(三)
- 学习总结(三)
- java.util.zip.ZipException: invalid LOC header (bad signature)
- linux下常用命令
- Jquery 为什么可以拿到action请求之后的值栈中的值?
- Ubuntu14.04安装Python3.5
- Android 滑动悬浮置顶效果的新实现
- 实训总结(三)
- 深度解读华为5G空口新技术:F-OFDM和SCMA
- NSAttributedString的各种属性设置
- java集合
- (5)gluLookAt、glViewport()、glOrtho和gluPerspective参数分析
- JDBC为什么使用反射加载驱动
- java线程池解析
- jquery
- 解决Ionic官方网站打开缓慢问题