Program: 109988
Project: 109988
Buggy source:
public boolean parseResults(String resultsFile,Map<Integer,String[]> qs,Map<Integer,Map> opts){
  boolean complete=true;
  try {
    Scanner scan=new Scanner(new File(resultsFile));
    String[] headers=scan.nextLine().split("String_Node_Str");
    int assignCol=0, completeCol=0, pendCol=0, answerCol=0;
    Map<Integer,String> results=new HashMap<Integer,String>();
    for (int i=0; i < headers.length; i++) {
      if (headers[i].equals("String_Node_Str")) {
        assignCol=i;
      }
      if (headers[i].equals("String_Node_Str")) {
        pendCol=i;
      }
      if (headers[i].equals("String_Node_Str")) {
        completeCol=i;
      }
      if (headers[i].equals("String_Node_Str")) {
        answerCol=i;
      }
    }
    int numAvailable=0;
    int numComplete=0;
    int numPending=0;
    Map<Integer,String> optionMap;
    int oid=0;
    Map<Integer,Double> ratings=new HashMap<Integer,Double>();
    while (scan.hasNextLine()) {
      String line=scan.nextLine();
      String[] hitArray=line.split("String_Node_Str");
      if (hitArray.length == 0) {
        break;
      }
      try {
        numAvailable=Integer.parseInt(hitArray[assignCol].replace("String_Node_Str","String_Node_Str"));
        numPending=Integer.parseInt(hitArray[pendCol].replace("String_Node_Str","String_Node_Str"));
        numComplete=Integer.parseInt(hitArray[completeCol].replace("String_Node_Str","String_Node_Str"));
        if (numAvailable > 0 || numPending > 0) {
          complete=false;
        }
      }
 catch (      java.lang.NumberFormatException e) {
        e.printStackTrace();
      }
      ArrayList<String> answers=new ArrayList<String>();
      String res="String_Node_Str";
      int currentCol=answerCol;
      if (!hitArray[answerCol].equals("String_Node_Str")) {
        for (int x=0; x < qs.keySet().size() * 2 + 2; x++) {
          res=hitArray[currentCol].replace("String_Node_Str","String_Node_Str");
          if (!res.equalsIgnoreCase("String_Node_Str")) {
            answers.add(res);
          }
          currentCol++;
        }
      }
      int qid=0;
      int counter=0;
      String questionString="String_Node_Str";
      for (      String ans : answers) {
        if (counter % 2 == 0) {
          qid=Integer.parseInt(ans.replace("String_Node_Str","String_Node_Str"));
        }
 else {
          String[] q=qs.get(qid);
          if (!results.containsKey(qid)) {
            if (!q[2].equals("String_Node_Str")) {
              results.put(qid,q[1] + "String_Node_Str" + q[2].substring(q[2].lastIndexOf("String_Node_Str") + 1)+ "String_Node_Str");
            }
 else {
              results.put(qid,q[1] + "String_Node_Str");
            }
          }
          oid=Integer.parseInt(ans.substring(ans.lastIndexOf("String_Node_Str") + 1).replace("String_Node_Str","String_Node_Str"));
          String questionLine=results.get(qid);
          questionLine+=(opts.get(qid).get(oid) + "String_Node_Str");
          results.put(qid,questionLine);
          if (!ratings.containsKey(qid)) {
            ratings.put(qid,(double)oid);
          }
 else {
            ratings.put(qid,((double)oid + ratings.get(qid)) / 2.0);
          }
        }
        counter++;
      }
    }
    for (    int qid : results.keySet()) {
      results.put(qid,results.get(qid) + ratings.get(qid));
    }
    System.out.println(results);
    PrintWriter out=new PrintWriter(new FileWriter("String_Node_Str"));
    out.println("String_Node_Str");
    for (    int qid : results.keySet()) {
      out.println(results.get(qid));
    }
    out.flush();
    out.close();
  }
 catch (  java.io.IOException e) {
    System.out.println("String_Node_Str");
    e.printStackTrace();
    System.exit(0);
  }
  return complete;
}

Fixed version (ground truth):
public boolean parseResults(String resultsFile,Map<Integer,String[]> qs,Map<Integer,Map> opts){
  boolean complete=true;
  try {
    Scanner scan=new Scanner(new File(resultsFile));
    String[] headers=scan.nextLine().split("String_Node_Str");
    int assignCol=0, completeCol=0, pendCol=0, answerCol=0;
    Map<Integer,String> results=new HashMap<Integer,String>();
    for (int i=0; i < headers.length; i++) {
      if (headers[i].equals("String_Node_Str")) {
        assignCol=i;
      }
      if (headers[i].equals("String_Node_Str")) {
        pendCol=i;
      }
      if (headers[i].equals("String_Node_Str")) {
        completeCol=i;
      }
      if (headers[i].equals("String_Node_Str")) {
        answerCol=i;
      }
    }
    int numAvailable=0;
    int numComplete=0;
    int numPending=0;
    Map<Integer,String> optionMap;
    Map<Integer,Double> ratings=new HashMap<Integer,Double>();
    while (scan.hasNextLine()) {
      String line=scan.nextLine();
      String[] hitArray=line.split("String_Node_Str");
      if (hitArray.length == 0) {
        break;
      }
      try {
        numAvailable=Integer.parseInt(hitArray[assignCol].replace("String_Node_Str","String_Node_Str"));
        numPending=Integer.parseInt(hitArray[pendCol].replace("String_Node_Str","String_Node_Str"));
        numComplete=Integer.parseInt(hitArray[completeCol].replace("String_Node_Str","String_Node_Str"));
        if (numAvailable > 0 || numPending > 0) {
          complete=false;
        }
      }
 catch (      java.lang.NumberFormatException e) {
        e.printStackTrace();
      }
      ArrayList<String> answers=new ArrayList<String>();
      String res="String_Node_Str";
      int currentCol=answerCol;
      if (!hitArray[answerCol].equals("String_Node_Str")) {
        for (int x=0; x < qs.keySet().size() * 2 + 2; x++) {
          System.out.println(hitArray[currentCol]);
          res=hitArray[currentCol].replace("String_Node_Str","String_Node_Str");
          if (!res.equalsIgnoreCase("String_Node_Str")) {
            answers.add(res);
          }
          currentCol++;
        }
      }
      int qid=0;
      int counter=0;
      String questionString="String_Node_Str";
      for (      String ans : answers) {
        if (counter % 2 == 0) {
          qid=Integer.parseInt(ans.replace("String_Node_Str","String_Node_Str"));
        }
 else {
          String[] q=qs.get(qid);
          if (!results.containsKey(qid)) {
            if (!q[2].equals("String_Node_Str")) {
              results.put(qid,q[1] + "String_Node_Str" + q[2].substring(q[2].lastIndexOf("String_Node_Str") + 1)+ "String_Node_Str");
            }
 else {
              results.put(qid,q[1] + "String_Node_Str");
            }
          }
          int oid=0;
          String[] optionStrings=ans.split("String_Node_Str");
          String questionLine=results.get(qid);
          double rating=0.0;
          for (int k=0; k < optionStrings.length; k++) {
            oid=Integer.parseInt(optionStrings[k].substring(optionStrings[k].lastIndexOf("String_Node_Str") + 1).replace("String_Node_Str","String_Node_Str"));
            questionLine+=(opts.get(qid).get(oid) + "String_Node_Str");
            rating=((double)oid + rating) / 2;
          }
          results.put(qid,questionLine);
          if (!ratings.containsKey(qid)) {
            ratings.put(qid,rating);
          }
 else {
            ratings.put(qid,(rating + ratings.get(qid)) / 2.0);
          }
        }
        counter++;
      }
    }
    for (    int qid : results.keySet()) {
      results.put(qid,results.get(qid) + ratings.get(qid));
    }
    System.out.println(results);
    PrintWriter out=new PrintWriter(new FileWriter("String_Node_Str"));
    out.println("String_Node_Str");
    for (    int qid : results.keySet()) {
      out.println(results.get(qid));
    }
    out.flush();
    out.close();
  }
 catch (  java.io.IOException e) {
    System.out.println("String_Node_Str");
    e.printStackTrace();
    System.exit(0);
  }
  return complete;
}