2017-01-29 4 views
0

do ... whileループを使用してオブジェクトにArrayListを追加しようとしています。残念ながら、私はプログラムを実行するたびに検証エラーを取得し続けます。ここでArrayListの検証エラー

は、私は、オブジェクトDVDにArrayListのを追加するために使用しています関数です。

public DVD getNewDVDInfo() { 

    String title = io.readString("Please enter DVD title"); 
    String releaseDate = io.readString("Please enter Release Date (mm-DD-yyyy)"); 
    LocalDate ld = LocalDate.parse(releaseDate, DateTimeFormatter.ofPattern("mm-DD-yyyy")); 
    String mpaaRating = io.readString("Please enter MPAA Rating"); 
    String directorName = io.readString("Please enter Director's Name"); 
    String studio = io.readString("Please enter Studio"); 
    boolean hasNext = true; 
    ArrayList<String> userRating = new ArrayList<>(); 
    String userRatingString = io.readString("Please enter User Rating"); 

    userRating.add(userRatingString); 
    DVD currentDVD = new DVD(title); 
    currentDVD.setReleaseDate(ld); 
    currentDVD.setMpaaRating(mpaaRating); 
    currentDVD.setDirectorName(directorName); 
    currentDVD.setStudio(studio); 
    currentDVD.setUserRating(userRating); 

    return currentDVD; 
} 

検証方法:

private void validateDVDData(DVD dvd) throws DVDLibraryDataValidationException { 
    if (dvd.getTitle() == null || dvd.getTitle().trim().length() == 0 
      || dvd.getReleaseDate() == null 
      || dvd.getMpaaRating() == null || dvd.getMpaaRating().trim().length() == 0 
      || dvd.getDirectorName() == null || dvd.getDirectorName().trim().length() == 0 
      || dvd.getStudio() == null || dvd.getStudio().trim().length() == 0 
      || dvd.getUserRating()== null || dvd.getUserRating().isEmpty()); { 

     throw new DVDLibraryDataValidationException("ERROR: All fields [Title, Release Date, MPAA Rating, Director's Name, Studio, User Rating] are required"); 
    } 
} 

私はアプリを実行するたびに、エラーメッセージがされスローされる。 ご協力いただければ幸いです。

+0

は、スタックオーバーフローへようこそ!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

答えて

0

問題を特定するには、デバッガを使用することができますが、チェックの方法を改善することもできます。代わりに、グローバルエラーをしているの

ERROR: All fields [Title, Release Date, MPAA Rating, Director's Name, Studio, User Rating] are required");

それは正確に問題が与えられた値である場所を知るために(情報をトレースするため、あなたにしても)多くのユーザーに役立つだろう。

DVDLibraryDataValidationExceptionクラスでは、エラーフィールド名を追加するリストのStringフィールドを追加できます。
また、このクラスのgetMessage()をオーバーライドして、検証エラーのあるフィールドを示す役立つメッセージを表示できます。

だけで起動する方法についてのアイデアを与えるために:

List<String> errorFields = new ArrayList<>(); 
if (dvd.getTitle() == null || dvd.getTitle().trim().length() == 0){ 
    errorFields.add("title"); 
} 

if (dvd.getReleaseDate() == null){ 
    errorFields.add("release date"); 
} 
... 
if (!errorFields.isEmpty()){ 
    throw new DVDLibraryDataValidationException("ERROR: All fields [Title, Release Date, MPAA Rating, Director's Name, Studio, User Rating] are required", 
               errorFields); 
}