я должен использовать возвращаемое значение метода? - PullRequest
0 голосов
/ 25 апреля 2018

все вопросы, которые я вижу, касаются использования возвращаемого значения, в то время как я хочу спросить о том, чтобы не использовать его. У меня есть метод, который получает название книги и удаляет все книги с одинаковым названием из массива книг (библиотеки).

я написал другой метод, который получает название книги и удаляет первую книгу с таким же названием из массива (не завершено на 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 голосов
/ 25 апреля 2018

вы бы сделали что-то следующим образом.Немного неясно, какой набор значений вы хотите удалить.если вы хотите выйти из цикла, если он возвращает 0, просто замените

closeGap();

на

if(closeGap()==0)
    break;
0 голосов
/ 25 апреля 2018

Вы можете использовать break для выхода из цикла for.Например,

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;
}
...