0
代码:错误输出,我想不通为什么
ArrayList<Employer> use = new ArrayList<Employer>();
ArrayList<String> Alia = new ArrayList<String>();
int moneyE, moneyF;
String Alias = "";
boolean alert, alertF;
for(int i = 0; i < Filers.size(); i++)
{
moneyE=0;
use.clear();
Alia.clear();
Alias = "";
alert = false; alertF = false;
use.addAll(this.findEmployerRecords(Filers.get(i)));
moneyF = Filers.get(i).getIncome();
for(int j = 0; j< use.size(); j++)
{
moneyE += use.get(j).getEmployeeWages();
if(!(Filers.get(i).getName().equals(use.get(j).getEmployeeName()))
&& !(Alia.contains(use.get(j).getEmployeeName())))
Alia.add(use.get(j).getEmployeeName());
if(moneyE !=moneyF
&& !(Filers.get(i).getName().substring(0, Filers.get(i).getName().indexOf(" ")+1).equals(
use.get(j).getEmployeeName().substring(0, use.get(j).getName().indexOf(" ")+1)))) //problem occurs here
alert = true;
if (alert = true)
alertF = true;
}
for(int j=1; j<Alia.size();j++)
Alias+= (", " + Alia.get(j));
if (moneyE != moneyF)
Discrepancies.add(new Discrepancy(alertF, moneyF-moneyE, Filers.get(i).getName(),
Filers.get(i).getSSN(), Alias));
}
我在我的棒结束。我无法弄清楚我在这里做错了什么。这是我用来创建虚拟IRS的一些代码。如果我在问题点删除+1,我会得到一个超出限制的异常。我遇到的问题是警报和alertF。如果货币E和货币F不匹配,并且雇主记录和归档人员之间的姓氏拼写不同,则警报状态应该消失。警报以星号显示。
预计:
*-100, HEATON MARK, 309582302, MCGUIRE MARK
*-50, FOX CHARLES, 724113610, BOX CHARLES
+105, MOFFITT DONALD, 206516583, MOFFITT DON
+100, YOUNG THOMAS, 813068590, YOUNG THOM, YOUNG TOM
-20, SOMASUNDAR PRASANTH, 138001926
+5, HORSLEY MARIA, 239984300
+5, LIANG BO, 743287509
+5, LIANG BO, 857410861
实际:
*105, MOFFITT DONALD, 206516583
*-100, HEATON MARK, 309582302, HEATON MARK
*100, YOUNG THOMAS, 813068590, YOUNG TOM
*-50, FOX CHARLES, 724113610
*-20, SOMASUNDAR PRASANTH, 138001926
*5, HORSLEY MARIA, 239984300
*5, LIANG BO, 743287509
*5, LIANG BO, 857410861
你应该附加一个调试器,并通过您的代码步,看看你的问题所取代。 – mkobit 2014-10-02 01:33:07
用完整的堆栈跟踪发布您的异常。 – 2014-10-02 01:37:19
在最后一个for循环中,您将'j'初始化为1,那可以吗? – 2014-10-02 01:42:51