我是Java编程新手并在学校学习。
我们已经完成了创建小型库的任务,其中包含以下类库,书籍,作者和副本。使用给定的类Biblio,它具有预定义的代码并将书籍添加到Class Copy中的arraylist中的类书。
附加了UML域,因此您可以了解类的流程 一切正常,生成的输出正确。
类库中只有一个方法不起作用,int方法必须根据类书(String)计算Copy的数量: 我必须通过Class Copy中的Arraylist查找特定的书并返回副本的数量。 对不起代码中的荷兰语。 我使用for循环尝试了多个步骤 现在我发现了一个类似的帖子使用hashset,我试过下面的代码,但返回的是0.(有3个副本)
package domein;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import domein.Boek;
import domein.Exemplaar;
/**
*
* Klasse die verantwoordelijk is voor het beheer van boeken
*
*/
public class Bibliotheek {
private ArrayList < Exemplaar > boekenlijst = new ArrayList < Exemplaar > ();
/**
*
* Print de naam van de Bibliiotheek.
*
*/
public Bibliotheek(String string) {
System.out.println(string);
}
/**
* Methode om een alle exmeplaren van de opgegeven boek toe te voegen aan de
* lijst.
*
* @param b1
* @param exemplaar
*/
public void voegToe(Boek b1, int exemplaar) {
for (int i = 0; i < exemplaar; i++) {
Exemplaar e = new Exemplaar(b1, exemplaar);
boekenlijst.add(e);
}
}
/**
* Methode om een boek toe te voegen aan de lijst.
*
* @param b2
*/
public void voegToe(Boek b2) {
Exemplaar f = new Exemplaar(b2, 1);
boekenlijst.add(f);
}
/**
* Hiermee worden alle boeken van de bibliotheek opgevraagd en getoond op het
* scherm.
*
* @return
*/
public ArrayList < String > toonCollectie() {
ArrayList < String > titels = new ArrayList < String > ();
for (Exemplaar boek: boekenlijst) {
System.out.println("Exemplaar --> " + boek.getTitel() + " " + boek.getAuteur() + " in taal " + boek.getTaal());
}
return titels;
}
/**
* Hiermee worden alle Engelse boeken van de bibliotheek opgevraagd en worden
* de exemeplaren in het Engels getoond op het scherm.
*
* @param string
* @return
*/
public ArrayList < Exemplaar > toonCollectie(String string) {
for (Exemplaar boek: boekenlijst) {
if (boek.getTaal() == string)
System.out.println("Exemplaar --> " + boek.getTitel() + " " + boek.getAuteur() + " in taal " + boek.getTaal());
}
return boekenlijst;
}
/**
* Hiermee worden alle auteurs welke een prijs hebben opgevraagd in de
* bibliotheek en degene met een prijs worden op het scherm getoond.
*
* @return
*/
public boolean printAuteurs() {
for (Exemplaar auteur: boekenlijst)
if (auteur.getPrijs(true))
System.out.println(auteur.getAuteur());
return false;
}
/**
* Een methode om door de boekenlijst te gaan en de totaal aantal exemplaren
* op te vragen.
*
* @param b1
* @return
*/
public int telExemplaren(Boek b1) {
Set < String > set = new HashSet < String > ();
int count = 0;
for (Exemplaar element: boekenlijst) {
String names = element.getTitel();
set.add(names);
}
for (String a: set) {
for (Exemplaar element: boekenlijst) {
String names = element.getTitel();
if (a.equals(names)) {
count++;
}
}
count = 0;
}
return count;
}
}
非常感谢任何帮助。我添加了完整的代码
答案 0 :(得分:2)
删除行
count = 0;
从函数末尾附近应该帮助它做一些比当前更有用的事情。
答案 1 :(得分:1)
您的telExemplaren()
方法完全忽略了Boek b1
参数。
也许这就是你想要做的事情?
public int telExemplaren(Boek b1) {
int count = 0;
for (Exemplaar element: boekenlijst) {
if (b1.getTitel().equals(element.getTitel())) {
count++;
}
}
return count;
}