Java 如何提取';对于';循环法?
我试图提取我的'for'循环,以便在Java 如何提取';对于';循环法?,java,refactoring,Java,Refactoring,我试图提取我的'for'循环,以便在printpartyBreakdownihouse()方法中调用它。基本上消除了重复代码或“代码气味”的可能性,以及我的printdetails()方法,但这样做的结果是“2”。有什么想法吗 public void printPartyBreakdownInSenate() { int numDemocrats = 0; int numRepblican = 0; int numIndepent = 0; String sen
printpartyBreakdownihouse()
方法中调用它。基本上消除了重复代码或“代码气味”的可能性,以及我的printdetails()
方法,但这样做的结果是“2”。有什么想法吗
public void printPartyBreakdownInSenate() {
int numDemocrats = 0;
int numRepblican = 0;
int numIndepent = 0;
String senateData;
ArrayList<MemberOfCongress> members;
senateData = CongressDataFetcher.fetchSenateData(congressNum);
members = parseMembersOfCongress(senateData);
for (MemberOfCongress party : members){
if (party.getParty().equals("D")){
numDemocrats++;
}
else if (party.getParty().equals("R")){
numRepblican++;
}
else if (party.getParty().equals("I")){
numIndepent++;
}
}
pintDetails(numIndepent, numIndepent, numIndepent, numIndepent, members);
}
/**
* printDetails method
*/
void pintDetails(int congressNum, int numDemocrats, int numRepblican, int numIndepent, ArrayList<MemberOfCongress> members){
System.out.println("Number of Members of the Senate of the " + congressNum + " Congress : " + members.size() );
System.out.println("# of Democrats: " + numDemocrats);
System.out.println("# of Republican: " + numRepblican);
System.out.println("# of Indep: " + numIndepent);
}
/**
* Calculate and print the number of Democrats, Republicans, and Independents in this House
*/
public void printPartyBreakdownInHouse(){
String houseData;
ArrayList<MemberOfCongress> members;
houseData = CongressDataFetcher.fetchHouseData(congressNum);
members = parseMembersOfCongress(houseData);
}
public void printPartyBreakdownInsete(){
int numDemocrats=0;
int numRepblican=0;
int numIndepent=0;
字符串senateData;
ArrayList成员;
senateData=CongressDataFetcher.fetchSenateData(congressNum);
members=parseMembersOfCongress(senateData);
(议员:议员){
如果(party.getParty()等于(“D”)){
民主运动++;
}
else如果(party.getParty().equals(“R”)){
numRepblican++;
}
else如果(party.getParty().equals(“I”)){
numIndepent++;
}
}
品脱细节(numIndepent,numIndepent,numIndepent,numIndepent,numIndepent,成员);
}
/**
*printDetails方法
*/
void pintDetails(int congressNum、int numdemocratits、int numRepblican、int numIndepent、ArrayList成员){
System.out.println(“国会+congressNum+的参议院成员数:“+Members.size()”);
System.out.println(“民主党人:“+NumDemocratits”);
System.out.println(“#共和党:“+numRepblican”);
System.out.println(“#of Indep:+numIndepent”);
}
/**
*计算并打印众议院民主党、共和党和无党派人士的人数
*/
public void printPartyBreakdownInHouse(){
字符串数据;
ArrayList成员;
houseData=CongressDataFetcher.fetchHouseData(congressNum);
members=parseMembersOfCongress(houseData);
}
您的错误如下:
pintDetails(numIndepent, numIndepent, numIndepent, numIndepent, members);
您正在打印numIndepent 4次…?行
pintDetails(numIndepent,numIndepent,numIndepent,numIndepent,numIndepent,成员)代码>
应该读
pintDetails([变量不在代码中]、numdemocratits、numRepblican、nummindepent、members)
您可以使用一种方法,该方法接受成员
列表作为参数,并通过一个附加的助手类返回成员计数,如下所示:
class MemberCounter {
int numDemocrats;
int numRepblican;
int numIndepent;
};
MemberCounter countMembers(List<MemberOfCongress> members) {
MemberCounter counter = new MemberCounter();
for (MemberOfCongress party : members) {
if (party.getParty().equals("D")) {
counter.numDemocrats++;
}
else if (party.getParty().equals("R")){
counter.numRepblican++;
}
else if (party.getParty().equals("I")){
counter.numIndepent++;
}
}
return counter;
}
类成员计数器{
国际民主人士;
国际货币基金组织;
int numIndepent;
};
MemberCounter countMembers(列出成员){
MemberCounter计数器=新的MemberCounter();
(议员:议员){
如果(party.getParty()等于(“D”)){
counter.numDemocrats++;
}
else如果(party.getParty().equals(“R”)){
counter.numRepblican++;
}
else如果(party.getParty().equals(“I”)){
counter.numIndepent++;
}
}
返回计数器;
}
我想补充一点,因为@wisenhiemer似乎是个新手,在调用方法时,方法声明中的参数名称是不相关的,以防OP认为,因为它在一个地方被称为numDemocrats
,所以它在另一个方法中使用了同名的变量。