Sou iniciante em programação, gostaria de saber como organizar um vetor de String, imprimindo na tela os elementos já agrupados, por exemplo, tenho um vetor de String com 5 posições:
Você ta falando de criar um array e definir a posição dessas parada ai?
M
MegaJ
Estou tentando criar um program de controle de gastos; a aplicação deverá ter a opção de escolha do tipo de gatos(remédio, roupa, etc), a data do gasto e a forma de pagamento. Ele deve ter a opção de visualizar o total de gasto efetuado no mês, agrupados por tipo:
publicControleDespesa(){despesa=newDespesa[100];indice=0;}publicbooleancadastrarDespesa(Stringtipo,Stringdata,StringformaPagamento,floatvalor){if(indice<100){despesa[indice]=newDespesa(tipo,data,formaPagamento,valor);indice++;returntrue;}else{returnfalse;}}publicvoidexibirGastoMensal(){if(indice!=0){for(inti=0;i<indice;i++){for(intj=0;j<indice;j++){if(despesa[i].getTipo().equalsIgnoreCase(despesa[j].getTipo())){System.out.println("Data: "+despesa[j].getData());System.out.println("Tipo de gasto: "+despesa[j].getTipo());System.out.println("Forma de pagamento: "+despesa[j].getFormaPagamento());System.out.println("Valor: "+despesa[j].getValor());}}}}else{System.out.println("Nenhuma despesa cadastrada!");}}
}
.Meu problema está na visualização dos gastos por tipo
J
joaoiai
Se vc quer imprimir as despesas por tipo, é necessário que vc defina qual tipo vc quer exibir.
Exemplo:
publicvoidexibirGastoMensal(Stringtipo){if(indice>0){//se o indice for maior que 0, existirá alguma despesa cadastrada.for(inti=0;i<indice;i++){if(despesa[i].equalsIgnoreCase(tipo)){//verifico se a despesa na posição 'i' é igual ao tipo passado pelo parâmetro.//imprimo os dados.System.out.println("Data: "+despesa[i].getData());System.out.println("Tipo de gasto: "+tipo);System.out.println("Forma de pagamento: "+despesa[i].getFormaPagamento());System.out.println("Valor: R$ "+despesa[i].getValor());}}}else{System.out.println("Nenhuma despesa cadastrada.");}}
Outra forma, é assim:
publicvoidexibirGastoMensal(Stringtipo){if(indice>0){//se o indice for maior que 0, existirá alguma despesa cadastrada.StringBuilderdados=newStringBuilder();for(inti=0;i<indice;i++){if(despesa[i].equalsIgnoreCase(tipo)){//verifico se a despesa na posição 'i' é igual ao tipo passado pelo parâmetro.//Insiro os dados em uma StringBuilderdados.append("Data: ").append(despesa[i].getData()).append("\n");dados.append("Tipo de gasto: ").append(tipo).append("\n");dados.append("Forma de pagamento: ").append(despesa[i].getFormaPagamento()).append("\n");dados.append("Valor: R$").append(despesa[i].getValor()).append("\n");}}//Faço a verificação do tamanho da minha StringBuilder, se for maior que 0, irá imprimir os dados cadastrados//Senao, mensagem informativa de que não há despesas cadastradas com o tipo informado pelo parâmetro.System.out.println(dados.length()>0?dados.toString():"Não existem despesas desse tipo");}else{System.out.println("Não existem despesas cadastradas.");}}
EDIT
Acabei de ver que interpretei a pergunta de forma diferente. Ahaha.
M
MegaJ
Valeu amigo! Muito obrigado pela explicação, vejo q antes de tudo é preciso bem compreender a questão.
JeffersonFelix
Pelo que entendi, você quer ordenar seu array, é isso?
Pode utilizar vários tipos de algoritmos diferentes, mas o mais simples é o insertion sort. Algo assim: