2012-04-15 51 views
0

我想編譯我的NameRecord.java文件,但我不斷收到以下錯誤:找不到符號num = input.nextLine();這是說掃描儀輸入是問題,但我在調用NameRecord類之前初始化並填充掃描儀輸入。在Java中使兩個類一起工作

這兩個類都在同一個目錄下,所以我不確定我在做什麼錯。

這是調用NameRecord類的類。它不編譯我一直沒有找到一個符號方法NameRecord(字符串):

我忽略了一些方法,也包括在這個類中以節省空間。

+0

你在哪裏爲num = input.nextLine()定義了「input」? ? – 2012-04-15 15:18:10

+1

由於您的NameRecord類以多種方式被破解,因此您已經得到的不僅僅是編譯問題。 NameRecord類根本不應該包含任何用戶接口代碼,並且這個類中不應該有靜態變量,否則這個類的所有對象都將毫無價值,因爲所有對象都會保存相同的信息。你應該重新開始,並使其成爲一個真正的OOP類,包含實例變量,getter,setter等...所有的用戶界面代碼應該在GUI中,而不是NameRecord類。 – 2012-04-15 15:18:16

+0

您必須將'Scanner'傳遞給'NameRecord'類(一個壞主意),或者您應該在調用'NameRecord'並傳遞您讀入的字符串之前閱讀'Scanner'。 – twain249 2012-04-15 15:34:25

回答

1

防止編譯的問題是NameRecord類無法知道input。這是scope的問題。您的代碼「知道」input的唯一位置在的main方法中的try-catch塊內。您應該將input.nextLine()返回的String傳遞給NameRecord,以便按照您希望的方式工作。

這就是說,這是您的代碼約20個問題之一。

+0

雖然您的建議在技術上是正確的,我們不應該鼓勵糟糕的節目設計。所以請改變你的答案,並且不要鼓勵他在NameRecord類中使用Scanner。這意味着他不應該傳入任何掃描器參數。 – 2012-04-15 15:39:37

+0

我分別構建這些類以測試功能,然後嘗試使它們一起工作。我如何讓一個班級看到另一個班級? – 2012-04-15 15:56:35

相關問題