2016-10-18 63 views
-4

嘿,我不能運行,由於私人字符串「第一」和「最後」沒有被「使用」。爲什麼不能首先使用和最後使用?

任何想法爲什麼導致問題?謝謝!

public class Bananas{ 

    private String first; 
    private String last; 
    private static int members = 0; 

    public Bananas(String fn, String ln){ 
     first = fn; 
     last = ln; 
     members++; 

     System.out.printf("Constructor for %s %s, members in the club: %d\n", members); 
    } 
} 

獨立類

public class clasone { 

    public static void main(String[] args){ 
     Bananas member1 = new Bananas ("Ted","O'Shea"); 
     Bananas member2 = new Bananas ("John","Wayne"); 
     Bananas member3 = new Bananas ("Hope","Go"); 
    } 
} 
+0

你能分享你收到的錯誤信息嗎? – Mureinik

+3

這可能只是一個警告,而不是編譯錯誤。代碼無用,因爲無法從班級中獲取信息。 – duffymo

+0

錯誤「線程中的一個異常的構造函數」main「java.util.MissingFormatArgumentException:格式說明符'%s' \t at java.util.Formatter.format(Unknown Source) \t at java.io.PrintStream.format(Unknown源) \t在java.io.PrintStream.printf(來源不明) \t在主。(Main.java:13) \t在clasone.main(clasone.java:4) 「 –

回答

1

你的錯誤是在這一行:

System.out.printf("Constructor for %s %s, members in the club: %d\n", members); 

改變這樣的:

System.out.printf("Constructor for %s %s, members in the club: %d\n", first, last, members); 

消息the private strings "first" and "last" not being "used." |是一個警告,而不是一個錯誤。

錯誤"Contructor for 1 Exception in thread "main" java.util.MissingFormatArgumentException:是一個運行時錯誤,而不是編譯錯誤。這與printf方法女巫預計3個參數String, String, Number缺少爭論者有關,因爲在你的消息中你有%s %s %d

2

這不是一個編譯錯誤,它是一個運行時錯誤。正如它說的,你的printf格式是不正確的 - 它只會傳遞三個參數(兩個字符串和一個int),而你只傳遞(members)。從上下文,我假設你的意思是通過firstlast有太多:

System.out.printf("Constructor for %s %s, members in the club: %d\n", 
        first, last, members); 
// -- Here -------^------^ 
+0

謝謝你爲noob問題抱歉! –

1

,因爲你有你的String格式佔位你得到這個錯誤對此有沒有相應的價值,你的確有兩次%s和一旦%d這意味着它需要將兩個參數轉換爲String和一個整數或長整數。

試試這個:

System.out.printf(
    "Constructor for %s %s, members in the club: %d\n", first, last, members 
); 

更多有關Formatterhere細節。

NB:您可以在String格式%n取代\n爲在明年同樣的結果:

System.out.printf(
    "Constructor for %s %s, members in the club: %d%n", first, last, members 
); 
+0

非常感謝! –

1

構造器在線程1個例外 「主」 java.util.MissingFormatArgumentException:格式說明符'%s'

這是運行時錯誤,而不是編譯時錯誤。這意味着你的格式有三個值,但你只提供了一個值。

0

問題是到下面一行:

System.out.printf("Constructor for %s %s, members in the club: %d\n", members); 

Bcause您正在使用String中的兩個格式說明,一個用於INT到printf語句,所以你必須要通過對各自的格式說明三種價值,就像這樣:

System.out.printf("Constructor for %s %s, members in the club: %d\n", first,last,members); 

或刪除格式說明,如果你希望只使用會員加入printf語句,所以改變這樣的:

System.out.printf("Constructor for the members in the club: %d\n", members); 
相關問題