1. 程式人生 > >java筆記:輸出100-999的水仙花數

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次方和進行,結果除錯了半天才找到原因(四位數應該是四次冪)

相關推薦

java筆記輸出100-999水仙花

/************************************************************** 功能:輸出100-999的水仙花數 特別注意:水仙花數是指一個 n 位數 ( n≥3 ),它的每個位上的數字 的 n 次冪之和等於它本身。(例如:

【C語言】輸出100~999之間的所有“水仙花

  “水仙花數”:   “水仙花數”又稱為“阿姆斯特朗數”。如果一個n(n≥3)位數的各位數字的n次冪之和等於該數本身,則該數稱為“水仙花數”。如:153=1³+5³+3³。   問題:輸出100~999之間的所有“水仙花數”。   實現思路:   根據

輸出100-999中的所有水仙花

#include<stdio.h> int main(){ for(int i=1;i<9;i++){ for(int j=0;j<9;j++){ for(int k=0;k<9;k++){ int right=i*i*

Java筆記據類型、變量和數組

不支持 強制 div class 進制 變量 目標 基本類 ati 一、基本類型 Java的基本類型可劃分為四組: ①整型:byte、short、int、long(寬度依次為8、16、32、64,不支持無符號類型) ②浮點型:float、double(寬度依次為32、64,

C語言輸出100-1000之間的所有迴文並統計

從左到右讀和從右到左讀大小都是一樣的數稱為迴文數 #include<stdio.h> void main() { int i,j,k,s = 0; for(i = 101; i < 1000; i++) { k = i; j = 0; do {

Java語言編寫程式輸出100以內的素數

                                          &nb

Java開發練習1,打印出所有的"水仙花",所謂"水仙花"是指一個三位數,其各位數字立方和等於該本身。例如153 是一個"水仙花",因為153=1的三次方+5的三次方+3的三次方。

打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153 是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。 public class

15.1-全棧Java筆記Java事件模型是什麽?事件控制的過程有哪幾步??

java應用前邊兩節上一章節的內容,大家可以完成一個簡單的界面,但是沒有任何的功能,界面完全是靜態的,如果要實現具體功能的話,必須要學習事件模型。事件模型簡介及常見事件模型對於采用了圖形用戶界面的程序來說,事件控制是非常重要的。一個源(事件源)產生一個事件並把它(事件對象)送到一個或多個監聽器那裏,監聽器只是

java筆記------(變量、基本據類型、據類型的轉換)

一個數 聲明 獲取 int 類型轉換 boolean 範圍 als 浮點 一.變量:變量即在程序運行過程中它的值是允許改變的量。(存數據的,代詞,指代它所存的那個數) 1)聲明:   int a; //聲明整型變量,名為a   int b,c,

Java筆記位運算

ring stat 意義 clas 提升 str pub style sys 一、數據存儲 二進制數在內存中以補碼的形式存放。正數的反碼、補碼均為本身。負數的反碼為符號位不變且其余位取反,補碼為反碼+1。 二、位運算 ①按位取反:反轉操作數中的所有位。 ②按位與:僅當兩

Java筆記類與方法

方法 子類 隱式 也不能 final 操作 nali def nbsp 一、對象引用 Java不允許使用指針,取而代之的是對象引用。對象引用可理解為指向對象的指針,但無法像真實的指針一樣指向內存的任意位置,也不能像操作地址那樣操作對象引用。除基本類型外的所有類型均為對象,所

Java筆記繼承

log 實例 println col 部分 style 成員 system new 一、超類引用 class Plain { int length; int width; Plain(int length, int width) {

Java筆記包與接口

ack str int ora stat 更多 get gre pan 一、包 使用package關鍵字聲明包。包的作用相當於命名空間。若沒有顯式地聲明類所屬的包,那麽類將會被放到默認的包中,默認的包沒有名稱。包支持層次化地創建,即支持嵌套。 使用import關鍵字導入包。

Java筆記異常處理

parseint runtime pan exceptio 定義 bound 頂部 args tostring 一、基礎知識 異常是用來描述代碼中發生的異常情況的對象。當出現引起異常的情況時,就會拋出異常對象。方法可以選擇自己處理異常或繼續拋出異常。異常可以由Java運行時

Java筆記多線程

join() 才會 pri 取數據 [] 沖突 開始 int art 一、意義 使用多線程的目的是為了提高CPU資源的利用效率。在單線程應用中程序必須等待當前任務的完成才能繼續執行下一項任務,CPU在等待的時間內就閑置了,多線程的使用可減少閑置時間。 二、主線程 當Ja

Java筆記枚舉

system out class 數值 運算符 通過 num str 繼承 一、基礎知識 枚舉常量為枚舉類型中的公有靜態成員,且其類型是聲明他們的枚舉類型。這些常量被稱為是自類型化的。由於是靜態常量,所以可直接使用關系運算符來比較兩個枚舉常量是否相等。此外可通過枚舉類型定義

Java筆記自動裝箱

情況 封裝 ati box class 數據類型 寫代碼 color clas 一、類型封裝器 出於性能考慮,Java並沒有放棄基本數據類型,如果總是以對象的形式來使用這些類型,會帶來不可接受的開銷。雖然基本類型提供了性能的好處,但有時又需要對象的表示形式。例如,基本類型無

Java筆記註解

ram 獲取 val 永久 技術分享 function rri 名稱 class a 一、基礎知識 Java支持在源文件中嵌入補充信息,這類信息稱為註解(元數據)。註解不會改變程序的行為,因此也不會改變程序的語義。 二、聲明 上述聲明表示註解。註解都只能包含方法聲明,不

Java筆記I/O

out eno display cat java筆記 txt fileinput put one 一、流 Java通過流實現I/O,流是一種可以產生或使用信息的抽象。 Java定義了兩種類型的流: 字節流:處理字節的輸入和輸出,例如讀寫二進制數據。 字符流:處理字符的輸入

Java筆記斷言

ner turn span -a ring get() sse edi ava 一、基礎知識 Java中可使用assert來創建斷言,斷言實在程序執行期間應當為真的條件。若條件為假,則會拋出AssertionError異常。斷言默認為關閉,在發布代碼中通常不會被使用,也不需