2012-03-09 1 views
0

안녕하세요. 자바 프로그램에 문제가 있습니다. 본질적으로 저는 사용자에게 책의 제목, 저자, 가격 및 isbn을 묻는 프로그램을 작성하고 있습니다. 그런 다음 입력을 저장하는 My Book 클래스에 저장하는 입력을받으며 JSON 형식과 비슷한 내용을 출력하는 toString 메서드가 있습니다. 그런 다음 내 books 클래스는 Array 목록을 사용하여 Book 객체를 저장하고 전체 책 세트를 JSON 형식으로 인쇄하는 toString 메서드를가집니다. 문제는 제대로 형식을 지정하지 않는다는 것입니다. 문제는 내 코드의 if 및 else 문 내에 있습니다. Heres는 내 코드 : 내 프로그램을 실행하면자바에서 입력 형식을 JSON 형식으로 입력 할 때


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); 
... 
관련 문제