gpt4 book ai didi

java - 在java中的arraylist上添加空或null

转载 作者:行者123 更新时间:2023-12-01 09:15:11 25 4
gpt4 key购买 nike

我正在尝试在 Excel 文件中搜索帐号,作为返回,如果该帐号存在于工作表中,我将获得“应付总额”。我可以使用此代码进行扫描,但是,如果工作表中不存在帐号,则会出现错误。

for(int i = 0; i < accno.size(); i++){
for(int j = rowAccNo1+1; j < row.getRowNum(); j++){
srcaccno = formatter.formatCellValue(sheet.getRow(j).getCell(0));
totalamt = formatter.formatCellValue(sheet.getRow(j).getCell(10));

if(accno.get(i).contains(srcaccno)){
totalamountdue.add(i, totalamt);
}
}
}

编辑:你好,我正在使用 Apache POI。

我声明 accno 如下:

static ArrayList<String> accno = new ArrayList<String>();

我收到此错误。也许Java找不到帐号,这就是他抛出这个问题的原因。但我不知道是否可以在数组列表上添加空或 null。

at java.util.ArrayList.rangeCheckForAdd(Unknown Source) at java.util.ArrayList.add(Unknown Source) at com.joven.DataExtractionTool.App.compareMastertoSourceABC(App.java:372) at com.joven.DataExtractionTool.App.main(App.java:78) at com.joven.DataExtractionTool.AppTest.testApp(AppTest.java:17) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:131) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

感谢您的回复!

我真正喜欢做的是,如果工作表中存在accno,则获取totalamount due。如果不存在,则在totalamountdue上留空,这样如果我在控制台中输出数组列表,它就会显示空白。

最佳答案

你的问题来自于此

if(accno.get(i).contains(srcaccno)){
totalamountdue.add(i, totalamt); // ########
}

由于您将总计添加到列表中的特定索引(与帐户列表对应的索引)中,因此如果您在列表中找不到该帐户,则需要插入一个“默认”值床单。如果不这样做,帐户列表和总列表之间的长度将会不同。这意味着您尝试将一个值添加到far(越界异常)。

其实,还有更简单的方法(不知道为什么我没有先想到)

在开始搜索工作表之前,插入一个空值

totalamountdue.add(null);

然后,在搜索循环中,如果您找到一个值,则将此 null 替换为找到的总数。

if(accno.get(i).contains(srcaccno)){
totalamountdue.set(i, totalamt); // use SET to replace the value at a specific index.
}

完整循环

totalamoutdue.add(null); //will insert at the end, i.
for(int j = rowAccNo1+1; j < row.getRowNum(); j++){
srcaccno = formatter.formatCellValue(sheet.getRow(j).getCell(0));
if(accno.get(i).contains(srcaccno)){
totalamt = formatter.formatCellValue(sheet.getRow(j).getCell(10)); //No need to get the value if it is not the account you want
totalamountdue.set(i, totalamt);
break; //Break the current for loop, IF there is no need to read further
}
}

关于java - 在java中的arraylist上添加空或null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40604770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com