java筆記:輸出100-999的水仙花數
功能:輸出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次方和進行,結果除錯了半天才找到原因(四位數應該是四次冪)