2011-11-26 46 views
-1

我需要一個方法來寫入另一個類的BufferedReader輸入。從另一個類寫入BufferedReader

在A類中,我使用BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));str = stdin.readLine();從用戶獲得輸入,然後輸入該輸入,對其進行格式化並使用System.out.println將其打印出來。

現在我發現我想給B類的A類提供一些輸入,以便A類可以做到這一點並將其打印出來。

有沒有辦法做到這一點?

+0

也許我不明白的東西,但是你能不能只爲A類添加一個方法呢? 'void doYourThing(Object someInput)' – Thilo

+0

您無法寫入Reader或輸入流。 – EJP

+0

@EJP:好的,謝謝。 – BetaLyte

回答

1

您可以給出兩個構造函數,一個默認構造函數,它不接受任何參數,然後像現在這樣設置BufferedInputStream,第二個構造函數接受InputStream作爲參數,然後在構造函數中包裝InputStream BufferedInputStream並使用它。然後B類可以調用A的構造函數將其自己的InputStream傳遞給A.

+0

是的,Thilo基本上說了同樣的事情 - 我一直在試圖做到這一點。 我已經在類A中創建了兩個方法,一個用於設置輸入字符串的類B的setInput'和一個新的「main」方法,它基本上和真正的main類似,但只是輸入來自'setInput'。 但我的問題是,當我嘗試通過'A.setInput(「foo bar」)'設置類B中的輸入時,我得到了一個非靜態方法setInput(java.lang.String)不能被引用編譯時從靜態上下文錯誤。我無法弄清楚爲什麼! 所以我想嘗試另一種方式,希望它更容易。 – BetaLyte

+0

@Hunteren:這是一個完全不同的問題,可能是由於您沒有在其對象上調用實例方法,而是因爲它的類。您必須向我們展示您的代碼,以向您展示您的錯誤及其解決方案。而Thilo的答案與我的顯着不同。 –

+0

@ Hovercraft:嗯,是的,這是不同的問題。我只是想知道它是否可以通過其他方式實現,也許它更容易。我不知道如何在這裏展示我的代碼,因爲它是作業 - 然後我需要先做一些修改,現在我不想浪費時間。但我想我會把它運行在它的對象上。在類B方法(switch語句)中,我調用了classA.setInput(「foo bar」) - 並且在類A中,此方法只是創建自己的新實例並調用A類中的其他方法。 – BetaLyte