阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 普通考試_資訊處理:程式設計概要#115544
科目:程式設計
年份:112年
排序:0

題組內容

四、請依據以下Java程式碼回答下列問題:
64b0a0ab408e4.jpg

申論題內容

(二)請說明上述程式碼那幾行會產生編譯錯誤,以及錯誤的原因。(5分)

詳解 (共 1 筆)

詳解 提供者:hchungw
第6行:Animal dog = new Dog();
在這個代碼片段中,沒有給出Animal這個類的定義。除非在其他地方定義了Animal類,並且Dog類繼承自Animal類,否則這裡會出現編譯錯誤。如果Animal類不存在,編譯器會報錯找不到類定義。
第7行:Scanner in = new Scanner(System.in); int a = in.nextInt();
這個Scanner的使用是正確的,但它假設程式會從標準輸入接收一個整數。如果輸入的不是整數,nextInt()會拋出InputMismatchException。但是,從代碼上看,不會因此產生編譯錯誤。
第8行和第10行:dog.run(a); 和 dog.run();
這裡Dog類有兩個run方法的重載:一個接收一個整數參數,另一個不接收參數。如果Dog繼承自Animal且Animal沒有聲明這兩個方法為abstract,或者Dog類本身並未實現Animal中聲明的任何abstract方法,則不會產生編譯錯誤。
如果Animal類是存在的,並且Dog類正確地繼承了Animal類,那麼上述代碼應該不會產生編譯錯誤。但由於代碼片段中沒有提供Animal類的完整定義,無法確定是否所有必要的條件都已滿足。
此外,代碼中的其他行如類的定義、main方法的聲明、Scanner類的導入看起來都是正確的,不應該產生編譯錯誤。但請注意,我們只能根據提供的資訊來判斷;實際上,如果Animal類或者相關的類路徑沒有正確設置,那麼可能會有編譯錯誤發生。