Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何提取';对于';循环法?_Java_Refactoring - Fatal编程技术网

Java 如何提取';对于';循环法?

Java 如何提取';对于';循环法?,java,refactoring,Java,Refactoring,我试图提取我的'for'循环,以便在printpartyBreakdownihouse()方法中调用它。基本上消除了重复代码或“代码气味”的可能性,以及我的printdetails()方法,但这样做的结果是“2”。有什么想法吗 public void printPartyBreakdownInSenate() { int numDemocrats = 0; int numRepblican = 0; int numIndepent = 0; String sen

我试图提取我的'for'循环,以便在
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
,所以它在另一个方法中使用了同名的变量。