为什么 Jlist 选择索引 0,即使该项目不存在

Why Jlist is selecting index 0 even when the item is not present there

为什么 Jlist 选择索引 0,即使该项目不存在。

这是我的代码,我创建了一个 JList lst 并将其内容设置为向量 vct,它由 class 人的对象组成,调用 toString() 时提供了 people.Which 外观的详细信息像这样,

screenshot of the problem

现在当我 运行 按下 ctrl+F 时调用的这段代码 如果我在输入对话框中输入 "alfozen", 然后它选择第一项、第三项、第五项和第七项,无论我搜索什么,索引 0(第一项)始终显示为选中状态,这是我在 Whosebug 的第一个问题,如果我应该提供有关 [的更多信息,请告诉我=24=]提前很多

这是代码,

if ((ke.getKeyCode() == KeyEvent.VK_F) && ((ke.getModifiers() & 
KeyEvent.CTRL_MASK) != 0))
{
 int i=0,j=0;

 lst.clearSelection();
 lst.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

 String s=JOptionPane.showInputDialog("Enter Name to search : ");
   if(s==null)return;

 String arg[]=new String[vct.size()];
 int arr[]=new int[vct.size()];

 for(people p : vct)
 {
  arg[i++]=p.toString();
 }

for(j=0,i=0;j<arg.length;j++)
{
 if(arg[j].contains(s))
 {
  arr[i++]=j;
 }
}
lst.setSelectedIndices(arr);
lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
}

那会是 因为你告诉它了。

循环后,arr 的前 i 个元素包含匹配的索引。其余的内容是什么?嗯,你从来没有给他们分配任何东西,所以他们持有默认的 int 值 0.

所以如果你有 5 个元素,并且第二个、第三个和第五个元素匹配,那么 ar 包含 1, 2, 4, 0, 0。

因此,当您调用 lst.setSelectedIndices(arr); 时,将选择元素 1、2、4、0 和 0。