呵呵,開(kāi)個(gè)玩笑。
這道題結果在杭州方言看來(lái)有點(diǎn)搞笑。樓主可百度一下。
不過(guò)出于程序玩玩,可考慮窮舉。難點(diǎn)就是再于如何保證1-9只能出現一次。
樓主的除法有點(diǎn)含糊。計算機有整除和小數除法。
這里咱考慮整除。計算機窮舉不累,所以不考慮簡(jiǎn)便運算了。
【代碼】import java.util.HashSet;import java.util.Set;public class Hello{ public static void main(String[] args) { for(int a=1;a<=9;a++) { for(int b=1;b<=9;b++) { for(int c=1;c<=9;c++) { for(int d=1;d<=9;d++) { for(int e=1;e<=9;e++) { for(int f=1;f<=9;f++) { for(int g=1;g<=9;g++) { for(int h=1;h<=9;h++) { for(int i=1;i<=9;i++) { //如果全部相等才判斷 if(isAToIAllNotSame(a,b,c,d,e,f,g,h,i)) { if(a+13*b/c+d+12*e-f-11+g*h/i-10==66) { System.out.printf("%d+13*%d/%d+%d+12*%d-%d-11+%d*%d/%d-10==66",a,b,c,d,e,f,g,h,i); System.out.println(); } } } } } } } } } } } } //判斷a-i這9個(gè)數是不是全部不相等。是的話(huà)就返回true否則false public static Boolean isAToIAllNotSame(int a,int b,int c,int d,int e,int f,int g,int h,int i) { Set s=(Set)new HashSet(); s.add(a); s.add(b); s.add(c); s.add(d); s.add(e); s.add(f); s.add(g); s.add(h); s.add(i); if(s.size()==9) { return true; } else { return false; }}}【運行效果】1+13*2/3+4+12*6-5-11+7*9/8-10==661+13*2/3+4+12*6-5-11+9*7/8-10==661+13*2/3+4+12*6-9-11+7*8/5-10==661+13*2/3+4+12*6-9-11+8*7/5-10==661+13*2/3+7+12*6-5-11+4*9/8-10==661+13*2/3+7+12*6-5-11+9*4/8-10==661+13*2/3+7+12*6-8-11+4*9/5-10==661+13*2/3+7+12*6-8-11+9*4/5-10==661+13*2/3+8+12*6-5-11+4*7/9-10==661+13*2/3+8+12*6-5-11+7*4/9-10==66……有很多。
【判斷重復檢測】hashset是一個(gè)可以存放不重復元素的集合。所以可以把窮舉的把a到i依次放入哈希集合里。
如果里面有9個(gè)元素,肯定都不重復。這么個(gè)題目弄的我瓦特都不好了。
第2章 一切都是對象2.1 用句柄操縱對象2.2 必須創(chuàng )建所有對象2.2.1 保存在什么地方2.2.2 特殊情況:主類(lèi)型2.2.3 Java中的數組2.3 絕對不要清除對象2.3.1 作用域2.3.2 對象的作用域2.4 新建數據類(lèi)型:類(lèi)2.4.1 字段和方法2.5 方法、自變量和返回值2.5.1 自變量列表2.6 構建Java程序2.6.1 名字的可見(jiàn)性2.6.2 使用其他組件2.6.3 static關(guān)鍵字2.7 我們的第一個(gè)Java程序2.8 注釋和嵌入文檔2.8.1 注釋文檔2.8.2 具體語(yǔ)法2.8.3 嵌入HTML2.8.4 @see:引用其他類(lèi)2.8.5 類(lèi)文檔標記2.8.6 變量文檔標記2.8.7 方法文檔標記2.8.8 文檔示例2.9 編碼樣式2.10 總結2.11 練習 第3章 控制程序流程3.1 使用Java運算符3.1.1 優(yōu)先級3.1.2 賦值3.1.3 算術(shù)運算符3.1.4 自動(dòng)遞增和遞減3.1.5 關(guān)系運算符3.1.6 邏輯運算符3.1.7 按位運算符3.1.8 移位運算符3.1.9 三元if-else運算符3.1.10 逗號運算符3.1.11 字串運算符+3.1.12 運算符常規操作規則3.1.13 造型運算符3.1.14 Java沒(méi)有“sizeof”3.1.15 復習計算順序3.1.16 運算符總結3.2 執行控制3.2.1 真和假3.2.2 if-else3.2.3 反復3.2.4 do-while3.2.5 for3.2.6 中斷和繼續3.2.7 切換3.3 總結3.4 練習 第4章 初始化和清除4.1 由構建器保證初始化4.2 方法過(guò)載4.2.1 區分過(guò)載方法4.2.2 主類(lèi)型的過(guò)載4.2.3 返回值過(guò)載4.2.4 默認構建器4.2.5 this關(guān)鍵字4.3 清除:收尾和垃圾收集4.3.1 finalize()用途何在4.3.2 必須執行清除4.4 成員初始化4.4.1 規定初始化4.4.2 構建器初始化4.5 數組初始化4.5.1 多維數組4.6 總結4.7 練習 第5章 隱藏實(shí)施過(guò)程5.1 包:庫單元5.1.1 創(chuàng )建獨一無(wú)二的包名5.1.2 自定義工具庫5.1.3 利用導入改變行為5.1.4 包的停用5.2 Java訪(fǎng)問(wèn)指示符5.2.1 “友好的”5.2.2 public:接口訪(fǎng)問(wèn)5.2.3 private:不能接觸5.2.4 protected:“友好的一種”5.3 接口與實(shí)現5.4 類(lèi)訪(fǎng)問(wèn)5.5 總結5.6 練習 第6章 類(lèi)再生6.1 合成的語(yǔ)法6.2 繼承的語(yǔ)法6.2.1 初始化基礎類(lèi)6.3 合成與繼承的結合6.3.1 確保正確的清除6.3.2 名字的隱藏6.4 到底選擇合成還是繼承6.5 protected6.6 遞增開(kāi)發(fā)6.7 上溯造型6.7.1 何謂“上溯造型”?6.8 final關(guān)鍵字6.8.1 final數據6.8.2 final方法6.8.3 final類(lèi)6.8.4 final的注意事項6.9 初始化和類(lèi)裝載6.9.1 繼承初始化6.10 總結6.11 練習 第7章 多形性7.1 上溯造型7.1.1 為什么要上溯造型7.2 深入理解7.2.1 方法調用的綁定7.2.2 產(chǎn)生正確的行為7.2.3 擴展性7.3 覆蓋與過(guò)載7.4 抽象類(lèi)和方法7.5 接口7.5.1 Java的“多重繼承”7.5.2 通過(guò)繼承擴展接口7.5.3 常數分組7.5.4 初始化接口中的字段7.6 內部類(lèi)7.6.1 內部類(lèi)和上溯造型7.6.2 方法和作用域中的內部類(lèi)7.6.3 鏈接到外部類(lèi)7.6.4 static內部類(lèi)7.6.5 引用外部類(lèi)對象7.6.6 從內部類(lèi)繼承7.6.7 內部類(lèi)可以覆蓋嗎?7.6.8 內部類(lèi)標識符7.6.9 為什么要用內部類(lèi):控制框架7.7 構建器和多形性7.7.1 構建器的調用順序7.7.2 繼承和finalize()7.7.3 構建器內部的多形性方法的行為7.8 通過(guò)繼承進(jìn)行設計7.8.1 純繼承與擴展7.8.2 下溯造型與運行期類(lèi)型標識7.9 總結7.10 練習 第8章 對象的容納8.1 數組8.1.1 數組和第一類(lèi)對象8.1.2 數組的返回8.2 集合8.2.1 缺點(diǎn):類(lèi)型未知8.3 枚舉器(反復器)8.4 集合的類(lèi)型8.4.1 Vector8.4.2 BitSet8.4.3 Stack8.4.4 Hashtable8.4.5 再論枚舉器8.5 排序8.6 通用集合庫8.7 新集合8.7.1 使用Collections8.7.2 使用Lists8.7.3 使用Sets8.7.4 使用Maps8.7.5 決定實(shí)施方案8.7.6 未支持的操作8.7.7 排序和搜索8.7.8 實(shí)用工具8.8 總結8.9 練習 第9章 違例差錯控制9.1 基本違例9.1.1 違例自變量9.2 違例的捕獲9.2.1 try塊9.2.2 違例控制器9.2.3 違例規范9.2.4 捕獲所有違例9.2.5 重新“擲”出違例9.3 標準Java違例9.3.1 RuntimeException的特殊情況9.4 創(chuàng )建自己的違例9.5 違例的限制9.6 用finally清除9.6.1 用finally做什么9.6.2 缺點(diǎn):丟失的違例9.7 構建器9.8 違例匹配9.8.1 違例準則9.9 總結9.10 練習 第10章 Java IO系統10.1 輸入和輸出10.1.1 InputStream的類(lèi)型10.1.2 OutputStream的類(lèi)型10.2 增添屬性和有用的接口10.2.1 通過(guò)FilterInputStream從InputStream里讀入數據10.2.2 通過(guò)FilterOutputStream向OutputStream里寫(xiě)入數據10.3 本身的缺陷:RandomAccessFile10.4 File類(lèi)10.4.1 目錄列表器10.4.2 檢查與創(chuàng )建目錄10.5 IO流的典型應用10.5.1 輸入流10.5.2 輸出流10.5.3 快捷文件處理10.5.4 從標準輸入中讀取數據10.5.5 管道數據流10.6 StreamTokenizer10.6.1 StringTokenizer10.7 Java 1.1的IO流10.7.1 數據的發(fā)起與接收10.7.2 修改數據流的行為10.7.3 未改變的類(lèi)10.7.4 一個(gè)例子10.7.5 重定向標準IO10.8 壓縮10.8.1 用GZIP進(jìn)行簡(jiǎn)單壓縮10.8.2 用Zip進(jìn)行多文件保存10.8.3 Java歸檔(jar)實(shí)用程序10.9 對象串聯(lián)10.9.1 尋找類(lèi)10.9.2 序列化的控制10.9.3 利用“持久性”10.10 總結10.11 練習 第11章 運行期類(lèi)型鑒定11.1 對RTTI的需要11.1.1 Class對象11.1.2 造型前的檢查11.2 RTTI語(yǔ)法11.3 反射:運行期類(lèi)信息11.3.1 一個(gè)類(lèi)方法提取器11.4 總結11.5 練習 第12章 傳遞和返回對象12.1 傳遞句柄12.1.1 別名問(wèn)題12.2 制作本地副本12.2.1 按值傳遞12.2.2 克隆對象12.2.3 使類(lèi)具有克隆能力12.2.4 成功的克隆12.2.5 Object.clone()的效果12.2.6 克隆合成對象12.2.7 用Vector進(jìn)行深層復制12.2.8 通過(guò)序。
1、對象的初始化(1) 非靜態(tài)對象的初始化 在創(chuàng )建對象時(shí),對象所在類(lèi)的所有數據成員會(huì )首先進(jìn)行初始化。
基本類(lèi)型:int型,初始化為0。 如果為對象:這些對象會(huì )按順序初始化。
※在所有類(lèi)成員初始化完成之后,才調用本類(lèi)的構造方法創(chuàng )建對象。 構造方法的作用就是初始化。
(2) 靜態(tài)對象的初始化 程序中主類(lèi)的靜態(tài)變量會(huì )在main方法執行前初始化。 不僅第一次創(chuàng )建對象時(shí),類(lèi)中的所有靜態(tài)變量都初始化,并且第一次訪(fǎng)問(wèn)某類(lèi)(注意此時(shí) 未創(chuàng )建此類(lèi)對象)的靜態(tài)對象時(shí),所有的靜態(tài)變量也要按它們在類(lèi)中的順序初始化。
2、繼承時(shí),對象的初始化過(guò)程 (1) 主類(lèi)的超類(lèi)由高到低按順序初始化靜態(tài)成員,無(wú)論靜態(tài)成員是否為private。 (2) 主類(lèi)靜態(tài)成員的初始化。
(3) 主類(lèi)的超類(lèi)由高到低進(jìn)行默認構造方法的調用。注意,在調用每一個(gè)超類(lèi)的默認構造 方法前,先進(jìn)行對此超類(lèi)進(jìn)行非靜態(tài)對象的初始化。
(4) 主類(lèi)非靜態(tài)成員的初始化。 (5) 調用主類(lèi)的構造方法。
3、關(guān)于構造方法 (1) 類(lèi)可以沒(méi)有構造方法,但如果有多個(gè)構造方法,就應該要有默認的構造方法,否則在繼承此類(lèi)時(shí),需要在子類(lèi)中顯式調用父類(lèi)的某一個(gè)非默認的構造方法了。 (2) 在一個(gè)構造方法中,只能調用一次其他的構造方法,并且調用構造方法的語(yǔ)句必須是 第一條語(yǔ)句。
4、有關(guān)public、private和protected (1) 無(wú)public修飾的類(lèi),可以被其他類(lèi)訪(fǎng)問(wèn)的條件是:a.兩個(gè)類(lèi)在同一文件中,b.兩個(gè)類(lèi) 在同一文件夾中,c.兩個(gè)類(lèi)在同一軟件包中。 (2) protected:繼承類(lèi)和同一軟件包的類(lèi)可訪(fǎng)問(wèn)。
(3) 如果構造方法為private,那么在其他類(lèi)中不能創(chuàng )建該類(lèi)的對象。 5、抽象類(lèi) (1) 抽象類(lèi)不能創(chuàng )建對象。
(2) 如果一個(gè)類(lèi)中一個(gè)方法為抽象方法,則這個(gè)類(lèi)必須為abstract抽象類(lèi)。 (3) 繼承抽象類(lèi)的類(lèi)在類(lèi)中必須實(shí)現抽象類(lèi)中的抽象方法。
(4) 抽象類(lèi)中可以有抽象方法,也可有非抽象方法。抽象方法不能為private。
(5) 間接繼承抽象類(lèi)的類(lèi)可以不給出抽象方法的定義。 6、final關(guān)鍵字 (1) 一個(gè)對象是常量,不代表不能轉變對象的成員,仍可以其成員進(jìn)行操作。
(2) 常量在使用前必須賦值,但除了在聲明的同時(shí)初始化外,就只能在構造方法中初始化 。 (3) final修飾的方法不能被重置(在子類(lèi)中不能出現同名方法)。
(4) 如果聲明一個(gè)類(lèi)為final,則所有的方法均為final,無(wú)論其是否被final修飾,但數據 成員可為final也可不是。 7、接口interface (用implements來(lái)實(shí)現接口) (1) 接口中的所有數據均為 static和final即靜態(tài)常量。
盡管可以不用這兩個(gè)關(guān)鍵字修飾 ,但必須給常量賦初值。 (2) 接口中的方法均為public,在實(shí)現接口類(lèi)中,實(shí)現方法必須可public關(guān)鍵字。
(3) 如果使用public來(lái)修飾接口,則接口必須與文件名相同。 8、多重繼承 (1) 一個(gè)類(lèi)繼承了一個(gè)類(lèi)和接口,那么必須將類(lèi)寫(xiě)在前面,接口寫(xiě)在后面,接口之間用逗 號分隔。
(2) 接口之間可多重繼承,注意使用關(guān)鍵字extends。 (3) 一個(gè)類(lèi)雖只實(shí)現了一個(gè)接口,但不僅要實(shí)現這個(gè)接口的所有方法,還要實(shí)現這個(gè)接口 繼承的接口的方法,接口中的所有方法均須在類(lèi)中實(shí)現。
9、接口的嵌入 (1) 接口嵌入類(lèi)中,可以使用private修飾。此時(shí),接口只能在所在的類(lèi)中實(shí)現,其他類(lèi)不 能訪(fǎng)問(wèn)。
(2) 嵌入接口中的接口一定要為public。 10、類(lèi)的嵌入 (1) 類(lèi)可以嵌入另一個(gè)類(lèi)中,但不能嵌入接口中。
(2) 在靜態(tài)方法或其他方法中,不能直接創(chuàng )建內部類(lèi)對象,需通過(guò)手段來(lái)取得。 手段有兩種: class A { class B {} B getB() { B b = new B(); return b; } } static void m() { A a = new A(); A.B ab = a.getB(); // 或者是 A.B ab = a.new B(); } (3) 一個(gè)類(lèi)繼承了另一個(gè)類(lèi)的內部類(lèi),因為超類(lèi)是內部類(lèi),而內部類(lèi)的構造方法不能自動(dòng) 被調用,這樣就需要在子類(lèi)的構造方法中明確的調用超類(lèi)的構造方法。
接上例: class C extends A.B { C() { new A().super(); // 這一句就實(shí)現了對內部類(lèi)構造方法的調用。 } } 構造方法也可這樣寫(xiě): C(A a) { a.super(); } // 使用這個(gè)構造方法創(chuàng )建對象,要寫(xiě)成C c = new C(a); a是A的對象。
11、異常類(lèi) JAVA中除了RunTimeException 類(lèi),其他異常均須捕獲或拋出。至于數據庫,WEB,JSP,JS之類(lèi)的那是高級部分了。
對于Java開(kāi)發(fā)學(xué)習者來(lái)說(shuō),基礎掌握的知識點(diǎn)有以下幾種:
1. Java面向對象的優(yōu)點(diǎn):易維護、易復用、易擴展,由于面向對象有封裝、繼承、多態(tài)性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易于維護。
2. Java虛擬機的概念,任何一種可以運行Java字節碼的軟件均可看成是Java的虛擬機(JVM)
3. JDK顧名思義它是給開(kāi)發(fā)者提供的開(kāi)發(fā)工具箱,是給程序開(kāi)發(fā)者用的。它除了包括完整的JRE(Java Runtime Environment),Java運行環(huán)境,還包含了其他供開(kāi)發(fā)者使用的工具包。
4. JRE的概念,普通用戶(hù)而只需要安裝JRE(Java Runtime Environment)來(lái)運行Java程序。而程序開(kāi)發(fā)者必須安裝JDK來(lái)編譯、調試程序。
5. Java中覆蓋(Override)是指子類(lèi)對父類(lèi)方法的一種重寫(xiě),子類(lèi)只能拋出比父類(lèi)更少的異常,且訪(fǎng)問(wèn)權限不能比父類(lèi)的小。被覆蓋的方法不能是 private 的,否則只是在子類(lèi)中重新定義了一個(gè)方法。
Java中重載(Overload)表示同一個(gè)類(lèi)中可以有多個(gè)名稱(chēng)相同的方法,但這些方法的參數列表各不相同。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:4.789秒