[Resolvido]Ajuda (Método)

8 respostas
Thiago_de_Paula_Bese

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:

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

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

8 Respostas

nel

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

Espero ter ajudado. Abraços

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.

Thiago_de_Paula_Bese

Olá Nil

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

nel

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.

Thiago_de_Paula_Bese

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.

[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]

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. :slight_smile:

Thiago_de_Paula_Bese

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. :)

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

abrs

nel

Ó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.

Criado 9 de novembro de 2009
Ultima resposta 9 de nov. de 2009
Respostas 8
Participantes 3