A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        很高兴来到黑马程序员学习JavaEE,不知不觉已经十几天过去了。感觉收获很多。黑马的学习氛围很好,这跟我来之前从别人口中的黑马一样,班级的学员来自五湖四海,大都是通过亲戚朋友介绍才来到黑马学习JavaEE的,说明黑马程序员的口碑相当不错。不过我并不是。我16年大学毕业后做了本专业一年多一点的工作,之后改行想做互联网,在一家刚成立的小公司做过一年时间,发现自己特别感兴趣,可是之前完全没有基础,想完全踏进互联网行业不太可能,于是乎今年来到杭州,无意中了解到杭州有黑马程序员的培训学校,就在网上了解了一下。听说黑马程序员管理比较严格,学习氛围很好,师资力量也不错,每年都有一大批优秀学员毕业后找到逞心如意的高薪工作,于是乎完全没有了解其他同类培训机构,没有犹豫就直接报名就来到了黑马了。
        经过这几天基础班的学习,感觉自己收获很多,我发现原来写程序是那么有趣的一件事情。原本很复杂的一些题目,程序写起来感觉就很简单。下面就分享自己学习过程中做过的一到题目吧。
[Java] 纯文本查看 复制代码
/*
 需求:输入一个整数,要求打印输出为该整数的分解因式
 例如:输入90
 输出:90=2*3*3*5
这道题是用循环来做的,本身涉及到的知识我感觉并不是特别难,对于我们初学者来说,难点在于如何将这个简单的数学原理用代码表示出来。首先我想到的是用一个死循环,因为你并不知道用户会输入一个多大的数,所以你不知道这个数到底有多少个因子,总得计算次数是不固定的。因此用死循环无限进行下去,当把所有计算结果都计算出来的时候就停止循环,结束程序。
 */

import java.util.*;

public class NumTest
	{
		public static void main(String[] args)
			{
				Scanner sc = new Scanner(System.in);
				System.out.print("请输入要分解的数:");
				int num = sc.nextInt();
				int i = 2;
				String result = num + "=";

				//下面整体加入if(num > 1)时的方法体
                                //因为是自己测试,所以我自己只会输入大于1的数
				//次数未知,无限循环,直到满足特定条件为止
				while (true)
					{

						//如果num等于i,说明i已经是最大(且最后)的一个因子
						if (num - i == 0)
							{
								//拼接最后一个因子i
								result += i;
								//跳出循环
								break;
							}

						//如果i不是最大因子,能被整出
						if (num % i == 0)
							{
								//拼接
								result += i + "*";
								//除去因子i,用商继续循环
								num /= i;

								//因为可能存在连续相同的因子i,因此如果if没有执行,说明i不再是因子,i自增,进行下次循环
							}
						else
							{
								i++;
							}
					}
				//打印结果
				System.out.println(result);
			}
	}

刚开始思考这道题的时候,的确不太容易,但是想着想着,脑子里就有了一个计算过程,无非就是要从2开始,一直到这个数,看看哪个数是这个数的因子,难点在于,i是自增的,如果每计算一次i就自增一下的话,就忽略了i可能依旧还是这个数的因子的情况。为了保证i自增之前再判断一次i还是不是它的因子,最后想到了用if语句来判断一下,当时想到一地一点的时候,真的挺有成就感的。感觉自己并不笨,瞬间增加了自己学习Java编程的信心。最后写完一看,总共才这么几行代码,就解决了这个计算量还算比较大的问题,程序真是厉害呀。
最后希望所有同学们都能好好学习,将来就业办毕业后都能找到一份好工作!

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马