Help please

13 respostas
L
to fazendo um programa que dada uma linha de um arquivo ele tem q

cortar a linha em pedacos quando achar um { ou um }. Tipo assim:

public class cadeia{

public static void main{

int s = 5;
System.out.println(s);

}}

O que eu quero fazer eh quando achar o abre chaves eu cortar a string
e pular uma linha. So que eu nao consigo fazer ele cortar exatamente no abre chaves.
Alguem pode me dar uma ideia ou um exemplo de como se faz isso?

13 Respostas

R

Vc denovo?? :???:
heheheheheheh…
Não sei se vc leu a ultima msg q eu deixei…
vc vai ter q usar indexOf() e substring()…
assim:

String str = "qualquer coisa { que eu quero escrever } entre chaves"; String novaStr = ""; int i, j; i = str.indexOf("{"); j = str.indexOf("}"); novaStr = str.substring(0, i)+str.substring(i+1, j)+str.substring(j+1);
Pronto, assim vc terá uma nova string!!!
Continua com dúvidas??
Clique aqui e pegue um tutorial de strings!!!

[]'s

L

O meu codigo tah ai embaixo:

public class Sources

{

public static void main(String args[])

{

int j = 0;

int s = 0;
String linha = "arroz { feijao { bera";

       while ((j<linha.length()) && (linha.charAt(j)!='{') && (linha.charAt(j)!='}'))
           {
	if (j != linha.length())
	  {
	     for (int i=0;i<linha.length();i++)
	     {
                    if (linha.charAt(i) == '{')
                    {
                      j = i;
		  s = j+1;
		  linha.substring(s);
		  s++;
		  // Entaum, eu achei o indice que tah o abre chaves, dai eu queria fazer assim:
		  quando encontrar um abre chaves, pula uma linha e a mesma coisa pro fecha chaves.
		  So que se eu compilar isso vai dar
		  feijao{

		  Mas eu queria que ficasse assim:
		  arroz
		  {
		  feijao
		  {
		  bera
		  O que tah errado no meu codigo, acho q tah faltando eu colocar pra ir somando
		  no indice(s) pra ir cortando as substrings subsequentes. Mas o problema esta ai,
		  eu naum sei fazer isso!!! Vc poderia me ajudar?

		  System.out.println(linha);
               }
	    }

	 }
	        //linha = linha.substring(0,s);
		  //s= s+1;

//      }

}
}

R

[color=“darkblue”]Olá de novo!
use este código q eu te mandei:[/color]

String str = "qualquer coisa { que eu quero escrever } entre chaves"; String novaStr = ""; int i, j; i = str.indexOf("{"); j = str.indexOf("}"); novaStr = str.substring(0, i)+"\n"+str.substring(i+1, j)+"\n"+str.substring(j+1);

[color=“darkblue”]Repare que eu mudei alguma coisa… coloquei o “\n” q é um caracter especial de newLine e na variavel str troque pela sua string!
OK??

[]'s[/color]

L
Mudei pro seu codigo, mas dai da esse erro:

public class Break

{

public static void main(String args[])

{

int i, j;
String linha = "katia { Karen { berga";
  String novaStr = "";

  i = linha.indexOf("{");
  j = linha.indexOf("}");

  novaStr = linha.substring(0, i)+"\n"+linha.substring(i+1, j)+"\n"+linha.substring(j+1);

}

}

Exception in thread main java.lang.StringIndexOutOfBoundsException: String index out of range: -8

at java.lang.String.substring(String.java:1480)

at Break.main(Break.java:13)
L
Mudei pro seu codigo, mas dai da esse erro:

public class Break

{

public static void main(String args[])

{

int i, j;
String linha = "katia { Karen { berga";
  String novaStr = "";

  i = linha.indexOf("{");
  j = linha.indexOf("}");

  novaStr = linha.substring(0, i)+"\n"+linha.substring(i+1, j)+"\n"+linha.substring(j+1);

}

}

Exception in thread main java.lang.StringIndexOutOfBoundsException: String index out of range: -8

at java.lang.String.substring(String.java:1480)

at Break.main(Break.java:13)
L

E outra coisa, sei q to enchendo jah, mas sorry, eu queria mt aprender a programar dreitnho…Entaum, eu tb tenho outra duvida. Tipo, eu vou ter que cortar a linha de um arquivo com nvarios abres e fecha chaves, por isso se eu queria colocar os indices de um modo generico para eles lerem ate o fim do arquivo e irem fazendo as substrings.

R
class alguma 
{ 
	public void main(String args[])
	{ 
		int i = 0, j = 0;

		String linha = "katia { Karen { berga"; 
		String novaStr = ""; 

		i = linha.indexOf("{"); 
		j = linha.indexOf("}");
		if (i < 0)
			System.out.println("Sou menor que 0");

		novaStr = linha.substring(0, i)+"\n"+linha.substring(i+1, j)+"\n"+linha.substring(j+1);
		System.out.println("1: "+i+",2: "+j);
		System.out.println(linha);

	} 

}

[color="darkblue"]Consertei o erro do substring, agora tenho que saber pq o main está falhando!!!
Eu já vi esse erro, mas não lembro como corrigi-lo, se alguém conseguir antes!!!

[]'s[/color]

R

[color=“darkblue”]Ops, bem nessa parte vc vai ter q fazer o seguinte…
Usar aquele vetor de inteiros q eu te falei…
É um pouco complicado pois vc vai ter usar muitas regrinhas, agora a parte de leitura de arquivo eu nunca fiz com isso, mas sei q é da biblioteca “io” e tem nos tutoriais do PJ. Dá uma olhada lá que tem muita coisa boa!!!

[]'s[/color]

L

Valeu, agora jah entendi o negocio dos indices,. Valeu…atmas ate aeu ter mais duvidas hehehehe, nossa Java eh complicadinho hein,m cheia de detalhes essa linguagem…e

L

Valeu, agora jah entendi o negocio dos indices,. Valeu…atmas ate aeu ter mais duvidas hehehehe, nossa Java eh complicadinho hein,m cheia de detalhes essa linguagem…e

R
[color="darkblue"]Finalmente corrigimos o erro!! Confere pra ver como ficou, agora é só vc trabalhar com as strings[/color]
class alguma 
{

	public int i = 0;
	public int j = 0;
	public String linha = "katia { Karen } berga";
	public String novaStr = "";

	
	public static void main(String args[]) throws Exception
	{
		try
		{
			String chave1 = "{";
			String chave2 = "}";
			alguma a = new alguma(); 
			a.i = a.linha.indexOf(chave1); 
			a.j = a.linha.indexOf(chave2);
			System.out.println("1: "+a.i+",2: "+a.j);
			a.novaStr = a.linha.substring(0, a.i)+"\n"+a.linha.substring(a.i, a.j)+"\n"+a.linha.substring(a.j);
			System.out.println("L: "+a.linha);
		}
		catch (Exception e)
		{
			e.getMessage();
		}
	}
}

[]'s

L

Oie, Nossa valeu!!! Entendi jah essa parte e agora eh so trabalharcom aqueles indexOf e substrings. Brigadao, valeu mesmo pela ajuda!!!

R

[color=“darkblue”]DNada!!!
O fórum está aí pra isso mesmo!!! :wink:

[]'s e boa sorte!!![/color]

Criado 12 de agosto de 2004
Ultima resposta 16 de ago. de 2004
Respostas 13
Participantes 2