我必须使用方法的返回值吗?

时间:2018-04-25 19:02:08

标签: java methods return using

我看到的所有问题都是关于使用返回值,而我想问的是不使用它。 我有一个获取书名的方法,并从一系列书籍(图书馆)中删除所有具有相同标题的书籍。

我写了另一种获取书名的方法,并从数组中删除了第一本给出相同标题的书(不是100%完成因为问题是关于它):

public Book remove(String name)
{    
    Book bookRemoved= null;
    for (int i=0; i<_noOfBooks; i++)
    {
        if (name.equals(_lib[i].getTitle()))
        {
            bookRemoved= new Book (_lib[i]);
            _lib[i]=null;
            closeGap();
        }            
    }             
    return bookRemoved;
}

我有另一个私有方法,其目的是关闭数组中创建的间隙,并返回已删除的图书数量:

//counts the amount of books removed and closes the gaps casued by removing them
private int closeGap()
{
    int count=0;
    //number of nulls
    for (int i=0; i<_noOfBooks;i++)  //run throughout array to find # of 
nulls
    {
        if (_lib[i]==null);
        count++;  
    }

    //closing gaps        
    for(int i=0; i<_noOfBooks-1;i++)
    {
        int nextCell=i+1;
        while (_lib[nextCell]== null)  //find the next cell after _lib[i] 
that isn't null
            nextCell++;
        if (_lib[i]== null)  
        {
            _lib[i]= _lib[nextCell];   //fill nulled cell with nextCell- 
temporarily alliasing
            _lib[nextCell]=null;       //remove nectCell value -remove 
alliasing
        }
    }
    return count;
} 

当我想使用closeGap方法时,我得到返回的值1,但是我无法找到一种方法来使用它来摆脱for循环而不会强迫它。 我必须使用返回的值吗?有没有办法摆脱循环使用它?

2 个答案:

答案 0 :(得分:1)

您可以使用break退出for循环。 E.g。

public Book remove(String name)
{    
    Book bookRemoved= null;
    for (int i=0; i<_noOfBooks; i++)
    {
        if (name.equals(_lib[i].getTitle()))
        {
            bookRemoved= new Book (_lib[i]);
            _lib[i]=null;
            if (closeGap() == 1) {
                break;
            }
        }            
    }             
    return bookRemoved;
}

答案 1 :(得分:0)

你会做如下的事情。对于要删除的值集,它有点模糊。如果你想离开循环,如果返回0只需替换

closeGap();

if(closeGap()==0)
    break;