publicclassGrupos(){privateintcodigo;privateintsubcod;privateStringdescricao;privatefloattotal;publicGrupos(intcodigo,intsubcod,Stringdescricao,floattotal){this.codigo=codigo;this.subcod=subcod;this.descricao=descricao;this.total=total;}// demais gets e sets}publicclassMontaGrupos(){publicMontaGrupos(){List<Grupos>grupos=newArrayList<Grupos>();grupos.add(newGrupos(1,1,"Grupo 1",10));grupos.add(newGrupos(1,2,"Grupo 1",15));grupos.add(newGrupos(2,1,"Grupo 2",5));grupos.add(newGrupos(2,3,"Grupo 2,"10));}}
Minha duvida é como fazer pra imiprir isto no console mesmo (System.out.println) que ficasse dessa forma
Grupo …: Grupo 1
10
15
Total Grupo 25
Grupo …: Grupo 2
5
10
Total Grupo 15
Alguem pode me ajudar a fazer esta “quebra” por grupo??
Uma dica importante. É bom que o nome de uma classe esteja no singular (Grupo) e o nome de uma coleção dessa classe esteja no plural (grupos); isso ajuda na leitura de seu programa.
diego2005
Você pode implementar um Comparable na sua classe Grupos que classifique por grupo. Ai depois você manda ordenar seu ArrayList. Ai depois é só fazer a iteração e ir imprimindo os elementos…
T+
LPJava
thingol:
Puxa vida, não é nada que um pouco de “ifs” e umas variaveizinhas temporárias não resolvam, não? Vou pôr em pseudo-código, e veja se é isso mesmo.
Uma dica importante. É bom que o nome de uma classe esteja no singular (Grupo) e o nome de uma coleção dessa classe esteja no plural (grupos); isso ajuda na leitura de seu programa.
se usar um for each nao ajuda nao?
T
thingol
Pode usar até goto e invokespecial (bytecodes da JVM) que não me importo; o algoritmo é que importa.
Realmente esqueci de afirmar que antes de fazer o “repetir para…” a lista deve estar ordenada por grupos.
diego2005
thingol:
Pode usar até goto e invokespecial (bytecodes da JVM) que não me importo; o algoritmo é que importa.
Realmente esqueci de afirmar que antes de fazer o “repetir para…” a lista deve estar ordenada por grupos.
Thingol, o que é invokespecial???
Grato,
Diego.
rodrigoallemand
LPJava:
se usar um for each nao ajuda nao?
E como vc faria a colocação do ForEach em Pseudo diferente da colocada pelo thingol e que fizesse um impacto maior?!?
T
thingol
Hum, é que só estava comentando que pseudo-código é uma forma de descrever um algoritmo e que você poderia usá-lo para implementar em qualquer linguagem. Para não ficar muito longe do mundo Java, a pessoa poderia programar diretamente nos bytecodes gerados pelo compilador; entre os quais se listam:
invokestatic - serve para chamar métodos estáticos;
invokevirtual - serve para chamar métodos de instância;
invokespecial - serve para chamar alguns métodos especialmente, como os construtores e o “super”.
Vou dar um exemplo de por que isso é necessário. Digamos que você tenha as seguintes classes:
Quando você chamar o método getNome da classe Criança, ele tem de chamar o método getNome da classe Pessoa (através da palavra-chave especial “super”. ) Isso é compilado em Java mais ou menos como:
invokespecialPessoa.getNome;// é o que o "super" faz
Ele não pode simplesmente chamar o método getNome() sem especificar de que classe é, porque senão teríamos uma recursão infinita (já que em vez de chamar o getNome de Pessoa iria chamar o getNome de Criança.)