2012-03-09 46 views
0

大家好,我有一個麻煩,我的Java程序。本質上,我正在編寫一個程序,要求用戶提供書名,作者,價格和isbn。然後它將輸入存儲到存儲輸入的Book類中,並具有一個toString方法,該方法輸出類似於JSON格式的內容。 然後,我的books類使用Array列表來存儲Book對象,並且有一個toString方法,它以JSON格式打印出整套書籍。問題是它沒有正確格式化。問題在於我的代碼中的if和else語句。我的繼承人代碼:格式化輸入作爲JSON格式與java的問題


import java.util.ArrayList; 
public class Books 
{ 
    private ArrayList<Book> books; 

    public Books() 
    { 
    books = new ArrayList<Book>(); 
    } 
    public void add(Book bk) 
    { 
    books.add(bk); 
    } 
    public String toString() 
    { 
    String temp = "{\n "; 
    temp = temp + " \"books:\": [\n"; 
    int bookCount = 0; 
    for (Book bk : books) { 
     temp += bk.toString(); 
     bookCount++;//add +1 to bookcount 
     if (bookCount < books.size()-1) { 
     temp += ",\n"; 
     } 
     else { 
     temp += "\n ]\n}\n"; 
     } 
    } 
    return temp; 
    } 
} 

當我運行我的程序,它看起來是這樣的:

Results

我的目標是有它看起來像這樣:

WantedResults

因此,在正確解析第一本書後,添加「,\ n」; 。但是每增加一個「\ n] \ n} \ n」後,每一本書都將被解析。我只想添加到最後一個。 :(請幫助。

在此先感謝

回答

0

的問題是,你的檢查條件之前增加bookCount值。

如果你沒有使用增強的for循環,代碼看起來像這樣

for (int bookCount = 0; bookCount < books.size()-1; bookCount++) { 
    Book book = books.get(i); 
    // print book 
    // check Condition 
} 

應該bookcount後檢查的條件

0

使用Jackson

... 
ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue (new java.io.Writer().write (jsonifiedStr), books); 
System.out.println (jsonifiedStr); 
...