/**************************************************************
功能:输出100-999的水仙花数
特别注意:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字
的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
**************************************************************/
class NarciNum {
int naturNumMin;
int naturNumMax;
public NarciNum(int min,int max) { //构造函数
naturNumMin = min;
naturNumMax = max;
}
public void narciNumMethod() { //输出100-999的方法
int count = 0;
int unitsDigits = 0;
int tensDigits = 0;
int hundrDigits = 0;
int units3 = 0;
int tens3 = 0;
int hundrs3 = 0;
if(!((naturNumMin > 0) && (naturNumMax > 0) && (naturNumMin < naturNumMax) && (naturNumMin >=100) && (naturNumMax < 1000))) {
System.out.println("error!Please input suitable number");
}/**此条为优化程序,只限定在100-999之间**/
else
for(int i = naturNumMin;i <= naturNumMax;i++) {
unitsDigits = i % 10;
tensDigits = (i / 10) % 10;
hundrDigits = i / 100;
units3 = unitsDigits * unitsDigits * unitsDigits;
tens3 = tensDigits * tensDigits * tensDigits;
hundrs3 = hundrDigits * hundrDigits *hundrDigits;
if(i == (units3 + tens3 + hundrs3)) { //判别每个数是否符合,符合输出
count++;
System.out.println(naturNumMin + "-" + naturNumMax + "中,水仙花数第" + count + "个是:" + i);
}
}
}
}
public class TestNarciNum {
public static void main(String[] args) {
TestNarciNum d = new TestNarciNum();
NarciNum testNum = new NarciNum(100,999);
testNum.narciNumMethod();
}
功能:输出100-999的水仙花数
特别注意:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字
的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)
**************************************************************/
class NarciNum {
int naturNumMin;
int naturNumMax;
public NarciNum(int min,int max) { //构造函数
naturNumMin = min;
naturNumMax = max;
}
public void narciNumMethod() { //输出100-999的方法
int count = 0;
int unitsDigits = 0;
int tensDigits = 0;
int hundrDigits = 0;
int units3 = 0;
int tens3 = 0;
int hundrs3 = 0;
if(!((naturNumMin > 0) && (naturNumMax > 0) && (naturNumMin < naturNumMax) && (naturNumMin >=100) && (naturNumMax < 1000))) {
System.out.println("error!Please input suitable number");
}/**此条为优化程序,只限定在100-999之间**/
else
for(int i = naturNumMin;i <= naturNumMax;i++) {
unitsDigits = i % 10;
tensDigits = (i / 10) % 10;
hundrDigits = i / 100;
units3 = unitsDigits * unitsDigits * unitsDigits;
tens3 = tensDigits * tensDigits * tensDigits;
hundrs3 = hundrDigits * hundrDigits *hundrDigits;
if(i == (units3 + tens3 + hundrs3)) { //判别每个数是否符合,符合输出
count++;
System.out.println(naturNumMin + "-" + naturNumMax + "中,水仙花数第" + count + "个是:" + i);
}
}
}
}
public class TestNarciNum {
public static void main(String[] args) {
TestNarciNum d = new TestNarciNum();
NarciNum testNum = new NarciNum(100,999);
testNum.narciNumMethod();
}
}
**************************************************************************************特别注意*******************************************************************************
1、编写程序一定要考虑全面。为了使程序更健壮,一定要加上优化程序,不然随时会出现BUGG。
2、编写程序首先要把概念弄清楚,不然会做很多无用功。比如:我在拓展1000-9999时,还是按3次方和进行,结果调试了半天才找到原因(四位数应该是四次幂)