2014-05-17 47 views
0

這是我試圖使用PrintWriter#printf方法的第二個時間,我得到這個錯誤信息:在的printf的方法是行不通的

方法的printf(字符串,對象[])類型PrintStream不適用於參數(字符串,字符串)

我使用的代碼有兩個類。

這是第一類:

class apples4 { 
    public static void main(String[] args) { 
    tuna4 tuna4Object = new tuna4("Kelsey"); 
     tuna4Object.saying(); 
    } 
} 

這是第二類:

public class tuna4 { 
    private String girlName; 

    public tuna4(String name) { 
     girlName=name; 
    } 

    public void setName(String name) { 
     girlName=name; 
    } 

    public String getName() { 
     return girlName; 
    } 

    public void saying(){ 
     System.out.printf("Your first girlfriend was %s\n", getName()); 
    } 
} 
+1

的Java的哪個版本你正在用嗎? –

+0

我在兩週前下載了java。我認爲這是1.8 – zyzz

+1

的Java 6,7或8應該工作沒有使用這些提示。 –

回答

3
Check your compliance level... 

enter image description here

0

PrintStream#printf方法是可行的,因爲的Java SE 5看起來你的代碼被編譯/被Java評估4或以前。

評論你的JDK的安裝和/或它是如何編譯/評估你的代碼,你的IDE設置。


順便說一句,如果使用Eclipse和Java 8時,Eclipse需要一個插件來識別的Java 8個應用程序,所以默認情況下,評估將降級項目的Java 1.4。這發生在我身上,我通過installing an update in Eclipse Kepler解決了它。 Eclipse的露娜(最新的Eclipse版本)說,它支持Java 8,但對我來說沒有工作(如果不知道我遵循的正確步驟或做錯了什麼,而是回到了開普勒和正常工作)。

+0

我有Java版本1.8。我剛剛嘗試1.5,那也沒有工作。我如何檢查它是如何編譯代碼的? – zyzz

+0

@zyzz取決於你的IDE,你必須告訴我們你正在使用哪一個。 – ajp15243

+0

@zyzz答案更新,對不起,我遲到更新。 –

0

這聽起來不可思議,但你可以投你的getName的返回值()方法對象:

System.out.printf("Your first girlfriend was %s\n", (Object) getName()); 

或(創建請求陣列)甚至

System.out.printf("Your first girlfriend was %s\n", new Object[] {(Object) getName()}); 

可以幫助。

+0

這對於'printf'不是必需的。特別是第二個:'System.out.printf'需要一個'String'和一個可變參數(所以你不需要打包數組) – Justin

+0

我認爲這是在解決症狀,而不是解決根本問題很可能OP的IDE正在編譯一個Java 1.4編譯器,它不識別var args)。 – ajp15243

+0

@Quincunx我知道。我只是試圖解釋問題的錯誤信息並對其作出反應。如果你在上面的例子中寫的是真的,錯誤信息就沒有意義了。 – TAq

0

我對我以前的帖子說我有同樣的問題對不起,我沒讀過「你交的閱讀在此之前」對話框,指出不這樣做。那麼,經過很多時間尋找答案之後,我自己就明白了。在首選項 - > Java的>編譯器中,有一個名爲左上角的按鈕「配置項目的具體設置...」。單擊它並將合規性級別更改爲> = Java 1.5,或將其關閉。繁榮,固定。