2014-09-30 52 views
1
private void formatLines() { 

    for (LineViewItem line:lineItems) { 

     if (line.inLineItems.get(0).word.getText().equals(" ")) { 

      line.inLineItems.remove(0); formatLines(); 

     } 

     if (line.inLineItems.get(line.inLineItems.size()-1).word.getText().equals(" ")) { 

      line.inLineItems.remove(line.inLineItems.size()-1); formatLines(); 

     } 
    } 
} 

以上是我想,以消除各line的第一个或最后一个对象的ArrayList lineItems如果条件是true的使用方法。当项目被删除,然后我想重复这个过程,并检查是否有另一个对象在每个linelineItemstrue条件的第一个和最后一个位置。这就是为什么这个方法被递归调用。这是否工作,因为它应该工作?我怀疑这是否正确。Java递归 - 这会工作吗?

+13

'这个工作吗?'你运行过吗? – 2014-09-30 12:10:58

+0

你的单元测试说什么? – 2014-09-30 12:11:27

+0

是的,但我不知道它是否真的工作,因为我认为它的工作 – Incredible 2014-09-30 12:11:52

回答

0

我想这是行不通的。

如果行有只有一个元素是LineItem,如果你在第一次删除,如果块,当你进入第二个,如果您块将达到

line.inLineItems.get(line.inLineItems.size()-1) 

line.inLineItems.size()会0,你将得到一个ArrayIndexOutOfBoundsException。