Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

caxinaswin

dúvidas com editar linha de ficheiro

Mensagens Recomendadas

caxinaswin    0
caxinaswin

tenho um exercicio que basicamente me pede para ir inserindo items para auxiliar nas compras de produtos, se for inserido um item que já exista esse será incrementado, basicamente tenho que adicionar items da seguinte forma

introduza um item: bola txt: bola#1

" " "" "" : bola txt: bola#2

tou a ter alguns problemas com o seguinte codigo talvez o loop não esteja muito bem

public static void alterarDados(String nome,int quantidade)
{

String linha = "";
for(int i = 0;i<linhas.size();i++)   // linhas defenido como global var, armazena num metodo anterior													  todas as linhas do ficheiro
{
linha = linhas.get(i);
  String[] campos = linha.split("#");   // separa os campos
  if(nome.equals(campos[0]))   // quando o primeiro campo for igual ao nome inserido
  {
int aux = 0;
int campo1 = 0;
   campo1 = Integer.parseInt(campos[1]);
System.out.print(campo1 + " ");
aux = campo1 + quantidade;  
String linha1 = nome + "#" + aux;
linhas.remove(i);
linhas.add(i,linha1);

  }


}

agradecia ajuda :S

}

Editado por apocsantos
geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
caxinaswin    0
caxinaswin

a minha dúvida prende-se com o facto de quando vou fazer os testes, comeca me a a aparecer duas vezes o mesmo item em linhas separadas, ou ele incrementa mais 1 no item ficando 3 quando na verdade só introduzi o item 2 vezes por isso é que digo que este loop não deve estar bem :S

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
siul72    2
siul72

Boas:

linhas o que é? uma Lista de Strings?

Duas coisas:

1. Utilizar linhas.remove(i) num loop que precorre os valores de linhas é perigoso...

2. Se o objectivo é actualizar o valor porque o apagas e crias um novo?

Finalmente nao sei se faz parte do exercicio mas utilizar Strings para esta finalidade é muito pouco eficiente, devias utilizar uma classe do tipo:

Class Produto {

String nome;
int quantidade;
}

depois tinhas uma List<Produto> listaDeProdutos = new ArrayList<>();
e para encontrar e actualizar:

for(Produto p : listaDeProdutos){
  if(p.nome.equals(nome){
p.quantidade = quantidade;
}

}

se nao encontrar adicona à lista.....

Editado por apocsantos
tag code + geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.