我希望在另一个函数中使用此函数。这个“addTotal”函数的作用是返回某个客户的每个银行账户的总余额。我通过插入“return total对账单,它只获取第一个银行账户的余额。对此有什么建议吗?
private int addTotal(ClientList clientList, String name)
{
for(int i = 0 ; i<clientList.getClientList().size();i++)
{
if(name.compareTo(clientList.getClientList().get(i).getName())==0)
{
for(int j =0;j<clientList.getClientList().get(i).getBankAccList().size();j++)
{
int total = clientList.getClientList().get(i).getBankAccList().get(j).showBalance();
total+=total;
return total; // i know here is the problem. any suggestion on this?
}
}
}
return -2;
}
首先,Eran解决了你最初的问题。你的问题是你没有总结金额,你做了:
total = total;
return total;
我对你的建议是当你有这样的代码时:
clientList.getClientList().get(i).getName()
在ClientList中创建一个函数,该函数获取一个整数i并返回名称,如下所示:
public String getClientName(int i)
取而代之的是上面的长代码,您所要使用的就是:
clientList.getClientName(i)
这个解决方案返回循环之外的总数。我不知道你为什么要返回-2,但是如果仍然需要它,你可以调整代码。
private int addTotal(ClientList clientList, String name)
{
int total =0;
for(int i = 0 ; i<clientList.getClientList().size();i++)
{
if(name.compareTo(clientList.getClientList().get(i).getName())==0)
{
for(int j =0;j<clientList.getClientList().get(i).getBankAccList().size();j++)
{
total+= clientList.getClientList().get(i).getBankAccList().get(j).showBalance();suggesti
}
}
}
return total;
}
您应该在方法的开头声明Total
变量,并在循环结束时返回它:
private int addTotal(ClientList clientList, String name)
{
int total = 0;
for(int i = 0 ; i<clientList.getClientList().size();i++) {
if(name.compareTo(clientList.getClientList().get(i).getName())==0) {
for(int j =0;j<clientList.getClientList().get(i).getBankAccList().size();j++) {
total+=clientList.getClientList().get(i).getBankAccList().get(j).showBalance();
}
}
}
return total;
}
编辑:
通过引入局部变量,可以提高代码的可读性:
private int addTotal(ClientList clientList, String name)
{
int total = 0;
for(int i = 0 ; i<clientList.getClientList().size();i++) {
Client client = clientList.getClientList().get(i);
if(name.compareTo(client.getName())==0) {
for(int j =0;j<client.getBankAccList().size();j++) {
total+=client.getBankAccList().get(j).showBalance();
}
}
}
return total;
}
或者更好的是,通过使用增强的for循环(我对您的类的名称进行了一些猜测):
private int addTotal(ClientList clientList, String name)
{
int total = 0;
for(Client client : clientList.getClientList()) {
if(name.compareTo(client.getName())==0) {
for(BankAccount acct : client.getBankAccList()) {
total+=acct.showBalance();
}
}
}
return total;
}
通过使用Java8 Streams,您可以使其更短:
private int addTotal(ClientList clientList, String name)
{
return clientList.getClientList()
.stream()
.filter(c -> name.compareTo(c.getName())==0)
.flatMap(c -> c.getBankAccList().stream())
.mapToDouble(BankAccount::showBalance)
.sum();
}
问题内容: 如何在交叉表中添加总计的另一行和一列? 我以为我会添加新列(通过对行求和而获得) 但这不起作用。 问题答案: 这是因为“类似属性”的列访问不适用于整数列名。使用标准索引: 请参阅文档本节末尾的警告:http : //pandas.pydata.org/pandas- docs/stable/indexing.html#attribute-access 当您要使用行时,可以使用: 在这种
一个存储容器中大约有500万条记录。我需要在一个集合对象中获取它们。我得到了下面的列表: 预期结果(需要计算特定“版本”的总大小): “Java”的总尺寸示例: "56" "58" "46" "56" "29"="245" 如何使用Java 8实现这一点?
我正在创建Jenkins管道,用于在Docker容器上运行terraform。 注意,我使用--entrypoint=/bin/bash将入口点覆盖到/bin/bash,因为hashiCorp/terraform:full已经定义了一个入口点。
考虑以下方法: 尤其是这两条线: 如果线程A进入synchronized块并获得当前对象的锁,这是否意味着该对象的实例属性的状态不能被synchronized块之外的其他线程改变(当线程A在synchronized块中时)? 例如,线程A执行了第1行- 消息是非静态同步列表 UPD:更新的方法,可能的解决方案: addLock - AtomicBoolean,默认为false
问题内容: 我已经看到了几种有神论的方法,它们似乎都起作用,但是我只是想知道一种方法是否比另一种更好。 例如,一个叫你可以这样做: 您还可以执行以下操作: 这些“正确”之一吗? 问题答案: 来自类javadoc的文字副本 JFrame类与Frame略有不兼容。像所有其他JFC / Swing顶级容器一样,JFrame包含JRootPane作为其唯一的子级。根窗格提供的内容窗格通常应包含JFrame
错误:无法初始化主类com.companyname.bank.App,原因是:java.lang.NoClassDefFoundError:org/apache/http/client/ResponseHandler 我在pom.xml文件中添加了依赖项,在/src/lib中也添加了相关的.jar文件之后,这个报告一直出现。真的很困惑,不知道怎么解决。 请帮我一把。谢谢。 以下是我的操作流程: >