Java:如何计算 arraylist 中出现的次数,然后让它在 toString 中打印该输出?
Java: How to count occurrences in an arraylist, then get it to print that output in a toString?
所以我正在做一个图书馆图书模拟,我目前卡住的部分是试图找到借出的图书数量,然后在调用 toString 方法时将其打印出来。
public class Biblio{
private ArrayList<Book> collection;
private int loanCount;
这本书的状态是枚举类型
public enum Status {LOAN, REFERENCE, AVAILABLE};
我卡住的代码:
public int numberOfBooksOnLoan(){
int loanCount= 0;
for(Book onLoan: collection){
if(onLoan.getBookStatus()== Status.LOAN){
loanCount++;
}
}
return loanCount;
}
@Override
public String toString(){
StringBuilder string= new StringBuilder();
string.append("total number of books: ").append(bookCollection.size()).append("\n");
string.append("number of loaned books: ").append(loanCount).append("\n");
return string.toString();
}
numberOfBooksOnLoan
和 toString
方法都在 Biblio
class
当我使用 toString
方法时,值 0 被打印,即使是在借书时,与 getLoanCount
方法(也在这个 class 中)形成对比将打印所需的值。
我的问题是,我怎样才能通过一个数组列表并计算所有借出的书籍,然后将这个值存储在一个变量中以便我可以在 toString 中使用它? 或者更一般地说,你如何遍历数组列表并计算所有具有共同特定变量的对象?
如果这是问题的一部分,我会收到关于
的警告 'local variable hides a field'
int loanCount = 0;
你有一个也叫loanCount的实例变量吗?如果答案是肯定的,请尝试删除实例一并更改 toString 以调用方法:
@Override
public String toString(){
StringBuilder string= new StringBuilder();
string.append("total number of books: ").append(bookCollection.size()).append("\n");
string.append("number of loaned books: ").append(numberOfBooksOnLoan()).append("\n");
return string.toString();
}
public int numberOfBooksOnLoan(){
int loanCount= 0;
for(Book onLoan: collection){
if(onLoan.getBookStatus()== Status.LOAN){
loanCount++;
}
}
return loanCount;
}
您正在 numberOfBooksOnLoan()
中创建局部变量,但在您的 toString()
方法中您使用的是 class 属性 loanCount
。
只需从 numberOfBooksOnLoan()
中的 int loanCount= 0;
中删除 int
,这样您就可以使用 class 属性而不是局部变量。
所以我正在做一个图书馆图书模拟,我目前卡住的部分是试图找到借出的图书数量,然后在调用 toString 方法时将其打印出来。
public class Biblio{
private ArrayList<Book> collection;
private int loanCount;
这本书的状态是枚举类型
public enum Status {LOAN, REFERENCE, AVAILABLE};
我卡住的代码:
public int numberOfBooksOnLoan(){
int loanCount= 0;
for(Book onLoan: collection){
if(onLoan.getBookStatus()== Status.LOAN){
loanCount++;
}
}
return loanCount;
}
@Override
public String toString(){
StringBuilder string= new StringBuilder();
string.append("total number of books: ").append(bookCollection.size()).append("\n");
string.append("number of loaned books: ").append(loanCount).append("\n");
return string.toString();
}
numberOfBooksOnLoan
和 toString
方法都在 Biblio
class
当我使用 toString
方法时,值 0 被打印,即使是在借书时,与 getLoanCount
方法(也在这个 class 中)形成对比将打印所需的值。
我的问题是,我怎样才能通过一个数组列表并计算所有借出的书籍,然后将这个值存储在一个变量中以便我可以在 toString 中使用它? 或者更一般地说,你如何遍历数组列表并计算所有具有共同特定变量的对象?
如果这是问题的一部分,我会收到关于
的警告 'local variable hides a field'int loanCount = 0;
你有一个也叫loanCount的实例变量吗?如果答案是肯定的,请尝试删除实例一并更改 toString 以调用方法:
@Override
public String toString(){
StringBuilder string= new StringBuilder();
string.append("total number of books: ").append(bookCollection.size()).append("\n");
string.append("number of loaned books: ").append(numberOfBooksOnLoan()).append("\n");
return string.toString();
}
public int numberOfBooksOnLoan(){
int loanCount= 0;
for(Book onLoan: collection){
if(onLoan.getBookStatus()== Status.LOAN){
loanCount++;
}
}
return loanCount;
}
您正在 numberOfBooksOnLoan()
中创建局部变量,但在您的 toString()
方法中您使用的是 class 属性 loanCount
。
只需从 numberOfBooksOnLoan()
中的 int loanCount= 0;
中删除 int
,这样您就可以使用 class 属性而不是局部变量。