2012-03-28 5 views
1

Hallo ich bin neu hier und neu in Java Programmierung auch mein Problem ist, dass ich eine Array-Liste des Typs Buch habe, in der ich Buchnamen und Titel speichern und setze den OnLoan-Wert explizit auf true oder false, aber ich kann true oder false für die Buch-ArrayList speichern, aber ich möchte die Anzahl der wahren Werte in meiner arrayList zählen sagen, wenn 3 Bücher mit ausgeliehenem Status true ich möchte die Zählung als 3 ich weiß nicht, wie man das von Arraylist in Java auszählen mir bitte helfen hier ist mein Beispielcode ich den wahren Wert bin immer durch die getOnLoanStatus() aufrufen aus Buch Klasse, die wahre und falsche WerteWie bekomme ich die Anzahl der wahren Werte in Arraylist Java

int borrowCount=0; 
    Book loanStatus = new Book(); 
    boolean l = loanStatus.getOnLoanStatus(); 
    //boolean to String conversion 

    System.out.println("value of l is" + l); 
    if(this.booksHeld.isEmpty()) 
     { 
     return null; 
     } 
     for(int i=0;i<this.booksHeld.size();i++) 
     { 
     if(booksHeld.contains(l)) // compare the isbn string with getIsbn Method 
     { 
      borrowCount++; 
     } 
     } 
     if(borrowCount==0) 
     { 
      return "Libray: " + numberOfBooks() + "books " + " 0 book on Loan"; 
     } 
     else 
     { 
      return "Libray: " + numberOfBooks() + "books " + borrowCount + "on Loan"; 
     } 
+0

Können Sie das Beispiel säubern und vervollständigen? Es gibt Variablen wie 'booksHeld', von denen ich annehmen kann, dass es eine' List 'ist, und dann gibt es Kommentare, die sagen" vergleiche die isbn-Zeichenfolge mit getIsbn-Methode ", aber es wird keine getIsbn-Methode angezeigt. – birryree

+0

Es tut mir wirklich leid, dass ignorieren, dass Kommentare und ja Bücher Held ist mein ArrayList-Objekt Bücher für Bibliothek und Benutzerklasse und ich arbeite derzeit an Library-Klasse zu ignorieren Issbn auch Entschuldigung für die Unannehmlichkeiten – Hardy

Antwort

9

hält Sie können eineverwenden, und für jedes Element überprüfen, ob es entlehnt [Book unter der Annahme hat eine Methode onLoanStatus(), welche angeben, ob es auf Last ist oder nicht]

so etwas aussehen:

int count = 0; 
for (Book b : booksHeld) { 
    if (b.getOnLoanStatus()) count++; 
} 
//now count holds the number of loaned books. 
+0

Vielen Dank für Ihre Hilfe – Hardy

0

Da diese Frage nicht der Fall ist noch die obligatorische Strom Antwort für java8 ;):

long count = booksHeld.stream().filter(book -> book.getOnLoanStatus()).count(); 

Source mit kleinen Änderungen.

Einfacher Ansatz: Nehmen Sie den Stream, filtern Sie ihn nach Prädikat, das dem booleschen Wert true entsprechen muss, und zählen Sie die Übereinstimmungen im Stream für den Filter.

Verwandte Themen