Problemas

2 respostas
L
Estou testando uma classe que desenvolvi que faz o seguinte: lê uma linha de um arquivo e corta através do método substring essa linha quando encontra um abre ou fecha chaves. Porém estou tendo um probleminha, porque quando há numa mesma linha uma string e um caractere abre chaves ele corta direitinho, porém quando o abre chaves está sozinho numa linha ele pula tb uma linha, e isso não poderia acontecer!!!

Veja o que acontece:

bola{piano ficará:

bola

{

piano

porém:

bola

{

piano ficará

bola

{

piano.
Como eu faço para tirar essa linha em branco, aí vai o pedaço do meu código:
private String linha_temporaria = new String("");

private String get_linha(BufferedReader rd)//Método que efetua a leitura das linhas
{
    int abre,fecha,proximo;
    String ln = new String("");
    String retorno;

    if (linha_temporaria=="")
    {
        try
        {
            ln=rd.readLine();
            if (ln!=null) linha_temporaria= ln.trim();
        }
        catch (IOException e)
        {
            System.out.println(e.getMessage());
        }
    }

    abre = linha_temporaria.indexOf('{');
    fecha = linha_temporaria.indexOf('}');

    if ((abre!=-1) || (fecha!=-1))
    {
        if (abre<fecha)
        {
            if (abre!=-1) proximo = abre;
            else proximo = fecha;
        }
        else
        {
            if (fecha!=-1) proximo = fecha;
            else proximo = abre;

        }
        
        if (proximo==0)
        {
            retorno = linha_temporaria.substring(0,proximo+1);
            linha_temporaria = linha_temporaria.substring(proximo+1).trim();
        }
        else
        {
            retorno = linha_temporaria.substring(0,proximo).trim();
            linha_temporaria = linha_temporaria.substring(proximo).trim();
        }
    }
    else
    {
        retorno = linha_temporaria;
        linha_temporaria="";
    }
    
    if (ln==null) retorno = ln;
    return retorno;
}

Desde já agradeço
até mais…

2 Respostas

F

Ja pensou que o erro pode estar na escrita das String’s na tela?

Como vc está fazendo isto?

_

Eu acho que ta fazendo o seguinte:

em:
bola{piano
string1 = bola // string antes de “{”
string2 = { // o proprio “{”
string3 = piano // string depois de “{”

em:
bola
{
piano
string1 = bola // depois encontra o fim da linha e pula para o outro
string2 = “” // nao encontra string antes de “{”
string3 = { // o proprio “{”
string4 = “” // nao encontra nada depois de “{”, entao pula a linha
string5 = “” // como chegou o fim da linha de “{”, ele pula a linha
srting6 = piano // depois encontra o fim da linha e pula para outra linha

Teu código deve ta pulando a linha toda vez que encontra uma string antes de “{”, toda vez que encontra o proprio “{”, toda vez que encontra uma string depois de “{” e toda vez que chega o fim da linha.

Por isso depois que encontra apenas um “{”, ele pula a linha duas vezes.

Deve ser isso…

()

Criado 13 de outubro de 2004
Ultima resposta 7 de nov. de 2004
Respostas 2
Participantes 3