列表索引超出范围:1

时间:2012-05-03 07:59:52

标签: salesforce

我创建了一个带有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

2 个答案:

答案 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)。