我创建了一个带有2个按钮1的VF页面,用于添加输入文本1乘1和第2个用于删除输入文本1乘1。 该过程正在上午1点工作,以添加和删除。但是当它出现在最后一个输入文本时,它就是一个错误。例如:如果添加3输入文本1,2,3 我可以删除3,2但是当我删除第1时它通过了一个错误 列表索引超出范围:1
这是我的代码
public PageReference cancel(){
system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew Out ' + eqLstNew.size());
integer i =0;
if( i<eqLstNew.size()){
i++;
system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew 1st ' + eqLstNew.size());
system.debug('@@@@@@@@@@@@@@@@@@@ i size ' + i);
eqLstNew.remove(i);
}
return null;
}
任何人都可以找到解决方案并告诉我代码中有什么问题。
由于 ANU
答案 0 :(得分:2)
在i++
:
if
来电
public PageReference cancel() {
system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew Out ' + eqLstNew.size());
integer i =0;
if( i<eqLstNew.size()){
system.debug('@@@@@@@@@@@@@@@@@@@ eqLstNew 1st ' + eqLstNew.size());
system.debug('@@@@@@@@@@@@@@@@@@@ i size ' + i);
eqLstNew.remove(i);
i++;
}
return null;
}
但我不明白你为什么要使用变量。如果你总是想要返回第一个元素,你应该像这样写。使用额外的变量(总是具有相同的值)使其更加复杂。
public PageReference cancel() {
if(eqLstNew.size() > 0){
eqLstNew.remove(0);
}
return null;
}
答案 1 :(得分:0)
列表中的第一个元素是索引0,而不是索引1.当有多个元素时,它会起作用,因为当你执行list.remove(1)时实际上是删除了列表中的第二个元素。如果你想删除第一个元素,你应该做list.remove(0)。