[Resolvido]Ajuda (Método)

Olá Pessoal

Queria saber o que devo colocar no lugar do break, pois quando Verdadeiro, a repetição tem que parar. Segue o código:

[code]
public boolean reserva2(String m[][], String nome){

    for (int l = 0; l < 10; l++)
        for (int c = 0; c < 10; c++)
        {
            if (m[l][c].equals(null) && m[l][c+1].equals(null))
            {
                m[l][c] = nome;
                m[l][c+1] = nome;
                return true;
                break;
            }
            
        }
    
    return false;
    
}[/code]

O Erro de Compilaçao segue abaixo

java:29: unreachable statement No caso linha 11 do exemplo que postei pros amigos.

Desde ja agradeço os amigos

Abrs

Boa tarde. O erro acontece porque usa um return e em seguida um break.

Você quer que quando entre neste if:

if (m[l][c].equals(null) && m[l][c+1].equals(null)) ele encerre o for e retorne um true, é isso?
Se for é simples, faça a seguinte alteração e teste:

[code]public boolean reserva2(String m[][], String nome){

    boolean retorno = false;

    for (int l = 0; l < 10; l++)   
        for (int c = 0; c < 10; c++)   
        {   
            if (m[l][c].equals(null) && m[l][c+1].equals(null))   
            {   
                m[l][c] = nome;   
                m[l][c+1] = nome;   
                retorno = true;   
                break;   
            }
            //se retorno == true, para o primeiro for.   
            if(retorno) 
                  break;  
        }   
       
    return retorno;   
       
}  [/code]

Espero ter ajudado. Abraços

Ou então, simplesmente remova o break, já que o return irá parar o for do mesmo jeito.

O código final fica muito menos rebuscado do que controlar o fluxo com um boolean. E não exige entendimento de quem lê, já que o return deixa explicito que, assim que a condição for atingida, nada mais será processado. Com o boolean, você é obrigado a ler o resto do código para chegar a essa conclusão.

Olá Nil

É isso sim, mas no caso, quando seria parar a função, retornando de imediato true, ou seja O amigo poderia me confirmar?.

Ficou meio estranho a sua pergunta mas então, pelo o que pude entender quer que retorne de imediato true caso satisfaça a condição do seu if. Para uma economia do processo siga a orientação do Viny, realmente, é mais simples.

Basta remover o break após o return ok?

Abraços.

[quote=ViniGodoy]Ou então, simplesmente remova o break, já que o return irá parar o for do mesmo jeito.

O código final fica muito menos rebuscado do que controlar o fluxo com um boolean. E não exige entendimento de quem lê, já que o return deixa explicito que, assim que a condição for atingida, nada mais será processado. Com o boolean, você é obrigado a ler o resto do código para chegar a essa conclusão.[/quote]

[b]Valeu pela dica cara.

Mas se eu continuar com bool, entao retirando o break, ao returnar true, ele nao para e continua ate o fim?

Agradeço a atenção.[/b]

Não. Se você dá um return true; ele não vai sair simplesmente do seu for mas sim do seu método e “ignora” a continuação do seu loop. Mas não era isso que você queria, caso a condição fosse verdadeira retornasse imediamente true?

Se sim, só remova o break e seja feliz. :slight_smile:

[quote=nel]Não. Se você dá um return true; ele não vai sair simplesmente do seu for mas sim do seu método e “ignora” a continuação do seu loop. Mas não era isso que você queria, caso a condição fosse verdadeira retornasse imediamente true?

Se sim, só remova o break e seja feliz. :)[/quote]

Era exatamente isto cara. Valeu pela mão e desculpa a demora da compreensão :smiley:

abrs

Ótimo. Agradeça ao Viny também rs.

Ah! Não esqueça de postar [Resolvido] ao lado do seu tópico ok?
Abração.