一、水仙花数
1、方式一:这是我的思路,取各个位数的方式。我个人习惯于使用取模运算。
public static List<Integer> dealNarcissiticNumberMethodOne( Integer startNum, Integer endNum) { List<Integer> resultList = new LinkedList<Integer>(); for (Integer i = startNum; i <= endNum; i++) { Integer unitDigit = i % 10;
// 该语句不够精炼,有冗余,应该写成 Integer tensDigit=i/10;即可 Integer tensDigit = (i / 10) % 10; Integer hundredsDigit = (i / 100) % 10; if (i == (unitDigit * unitDigit * unitDigit + tensDigit * tensDigit * tensDigit + hundredsDigit * hundredsDigit * hundredsDigit)) { resultList.add(i); } } return resultList; }
2、方式二:视频的主讲人的方式如下:跟小学学习计数的方式一样。此时显示出数学理论的重要。
public static List<Integer> dealNarcissiticNumberMethodTwo( Integer startNum, Integer endNum) { List<Integer> resultList = new LinkedList<Integer>(); for (Integer i = startNum; i <= endNum; i++) { Integer hundredsDigit = i / 100; Integer tensDigit = (i - hundredsDigit * 100) / 10; Integer unitDigit = i - hundredsDigit * 100 - tensDigit * 10; if (i == (unitDigit * unitDigit * unitDigit + tensDigit * tensDigit * tensDigit + hundredsDigit * hundredsDigit * hundredsDigit)) { resultList.add(i); } } return resultList; }
二、乘法口诀
一段代码,调试了四次。需要运行看结果才倒推代码的缺陷。理想情况,应当是,先把逻辑梳理清楚。再梳理。切记
代码如下:
1 public static String generateMultiplication(Integer startNum, Integer endNum) { 2 String result = ""; 3 for (int i = startNum; i <= endNum; i++) { 4 for (int j = startNum; j <= i; j++) { 5 result += j + "*" + i + "=" + i * j + " "; 6 } 7 result += " "; 8 } 9 return result; 10 }