Olá pessoal,
Estou precisando fazer a leitura de um arquivo .txt basicamente assim:
Rua número Morador
Rua São José 21 Fulano de tal
Rua Alambique 102 Ciclado das Tantas
Rua Presidente Arthur da Silva Bernardes 22 José da Silva
…
Notem que a rua é composta de várias strings, cujo tamanho varia de acordo com o endereço
O mesmo problema ocorre para o Morador.
O código que eu tenho é o seguinte:
Dados dados = new Dados();
try {
while (lendoRuas.hasNext()){
dados.setRua(lendoRuas.next());
dados.setCasa(lendoRuas.nextInt());
dados.setMorador(lendoRuas.next());
}
}
Uma solução que pensei foi entrar com “;” no arquivo txt pra separar os dados. Assim:
Rua;número;Morador
Rua São José;21;Fulano de tal
Rua Alambique;102;Ciclado das Tantas
Rua Presidente Arthur da Silva Bernardes;22;José da Silva
…
Se essa solução for a certa, como explicar pro Java que o “;” é um caractere separador?
Qaulquer outra solução é muito bem-vinda.
Obrigado.
pmlm
Abril 7, 2011, 4:36am
#2
Voce em primeiro lugar tem de separar por ","cada argumento.
e por “/n” cada linha.
em seguida retiras para uma string o conteúdo total.
[code]String total = “nome,morada morada,sobrenome/n”;
String[] linhas = total.split("/n");
for (String tmp : linhas) {
String[] argumentos = tmp.split(",");
String nome = argumentos [0];
String morada = argumentos [1];
String sobrenome = argumentos [2];
System.out.println("pessoa 1: -nome: "+nome+" morada: "+morada+" sobre nome: "+sobrenome )
}[/code]
Valeu pela ajuda pmlm e kikatus!
A ajuda de vocês foi fundamental.
O único problema é que o programa dá pau se ele encontrar algum espaço em branco no caminho.
Então precisei substituir os espaços por vírgula por exemplo:
Rua,São,José;21;Fulano,de,tal
Rua,Alambique;102;Ciclado,das,Tantas
Rua,Presidente,Arthur,da,Silva,Bernardes;22;José,da,Silva
Alguma sugestão quanto a isso?
Valeu, abraços!
se fizeste como eu disse e subestituiste os espaços por ‘;’ então suposta mente na variavel morada et´por exemplo: Alambique;102;Ciclado.
então é so sbsttuir por um ’ ’ o ‘;’ para obter a string direita.
private String remove_char(String string){
char[] str = string.toCharArray();
char[] filtro = {';'};
String str_out = "";
for (char c : str) {
for (char d : filtro) {
if(c!=d)
str_out+=c;
else
str_out+=' ';
}
}
return str_out;
}
remove_char(morada);
System.out.println(morada);
fica bem !