Galera tenho um arraylist com valores float, exemplo: 55.67, 67.98, 89.10, etc…
Preciso pegar o menor valor desse arraylist, como posso fazer ?
Obrigado
Galera tenho um arraylist com valores float, exemplo: 55.67, 67.98, 89.10, etc…
Preciso pegar o menor valor desse arraylist, como posso fazer ?
Obrigado
Ordene ele e pegue o a posição de numero zero
Segue um exemplo
package arrayordenacao;
import java.util.Arrays;
import java.util.Scanner;
/**
*
* @author Luiz Almeida Júnior
*/
public class ArrayOrdenacao {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// o array suporta n posições
float arrayOrdenar[] = new float[5];
for (int index = 0; index < arrayOrdenar.length; index++) {
System.out.print("Informe o " + (index + 1) + "º termo.:");
arrayOrdenar[index] = input.nextFloat();
}
Arrays.sort(arrayOrdenar, 0, arrayOrdenar.length);
System.out.println("\nArray ordenado.....: " + Arrays.toString(arrayOrdenar));
System.out.println("O menor termo é....: " + arrayOrdenar[0]);
}
}
[Editado.: mudei o vetor para float, não tinha lido o enunciado direito e deixei o array int, peço perdão pelo descuido. ]
Cara desculpa eu não entendi muito bem, meu método está assim :
public String exibirContaEconomica()
{
String saida= "";
if(arrayContaEnergia.isEmpty()){
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
........
}
}
return saida;
}
Como ficaria dentro do FOR ?
Obrigado
Nossa, exercício básico que se dá na primeira aula aula de for.
[code]float menorValorConta = FLOAT.MAX_VALUE;
float ContaEnergia menorConta = null;
for (ContaEnergia obj : arrayContaEnergia) {
if (obj.getValor() < menorValorConta) {
menorValorConta = obj.getValor();
menorConta = obj;
}
} [/code]
Se for em Java 8, e se ContaEnergia for comparable, há um jeito bem mais fácil:
ContaEnergia menor = arrayContaEnergia
.stream()
.min(ContaEnergia::compare)
.get();
Se não for comparable, basta colocar um Comparator dentro do método min:
ContaEnergia menor = arrayContaEnergia
.stream()
.min((e1, e2) -> (int)((e1.getValor() - e2.getValor()) * 100))
.get();
[quote=SirSmart]Cara desculpa eu não entendi muito bem, meu método está assim :
public String exibirContaEconomica()
{
String saida= "";
if(arrayContaEnergia.isEmpty()){
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
........
}
}
return saida;
}
Como ficaria dentro do FOR ?
Obrigado
[/quote]
Suponhamos que você tenha um array com os números 23,22 - 1,1 - 0,2 , ordenados ficaram 0,2 - 1,1 - 23,22 . Concorda comigo ?
e o menor ficara na posição 0 do array, correto ? se imprimir essa posição após ordenado terá o menor valor em tela.
Qualquer outra dúvida basta mandar uma MP, estarei ajudando na medida que eu souber.
Entendi, mas não consigo fazer isso :
arrayContaEnergiaa.sort(arrayContaEnergia);
Pq?
Abraço
[quote=SirSmart]Entendi, mas não consigo fazer isso :
arrayContaEnergiaa.sort(arrayContaEnergia);
Pq?
Abraço[/quote]
/* Segue a implementação
Vale ressaltar que estava faltando dois parametros sendo, 0 "Posição inicial" e "arrayContaEnergia.length" posição final, espero ter ajudado */
arrayContaEnergiaa.sort(arrayContaEnergia, 0 , arrayContaEnergia.length);
Cara não tenho a opção length no meu arrayList, só tenho size() e está ocorrendo erro.
Desculpa mas ainda não consegui resolver, se vc puder me ajudar eu agradeço
Abraço
[quote=SirSmart]Cara não tenho a opção length no meu arrayList, só tenho size() e está ocorrendo erro.
Desculpa mas ainda não consegui resolver, se vc puder me ajudar eu agradeço
Abraço[/quote]
ViniGodoy já lhe deu a resposta…
Mesmo assim mostre o seu código para a gente ver …
até…
[quote=SirSmart]Entendi, mas não consigo fazer isso :
arrayContaEnergiaa.sort(arrayContaEnergia);
[/quote]
// deve se inportar o pacote Arrays
import java.util.Arrays;
Arrays.sort(arrayContaEnergia, 0 ,arrayContaEnergia.length );
juninhohall, ele está usando ArrayList e não Arrays primitivos.
SirSmart, qual é o problema com a resposta que te passei?
Cara desculpa mas como sou muito novo em java não sei muito bem fazer a comparação e acabei não entendendo a maneira que vc fez. Vou postar minha classe e como estou fazendo e se vc puder me ajudar eu agradeço.
Segue:
package maisenergia;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JOptionPane;
public class GerenciaContasEnergia {
ArrayList<ContaEnergia> arrayContaEnergia;
public GerenciaContasEnergia()
{
arrayContaEnergia = new ArrayList();
}
public void adicionarContaEnergia(ContaEnergia conta)
{
arrayContaEnergia.add(conta);
}
public ContaEnergia buscarContaEnergia(int contaEnergia)
{
ContaEnergia conta = new ContaEnergia();
for (ContaEnergia obj : arrayContaEnergia)
{
if(obj.getNumeroConta() == contaEnergia)
{
//return obj;
conta.setNomeEndereco(obj.getNomeEndereco());
conta.setNumeroConta(obj.getNumeroConta());
conta.setQtdeKWConsumidos(obj.getQtdeKWConsumidos());
conta.setValorKWUnitario(obj.getValorKWUnitario());
}
}
return conta;
}
public String listarTodas()
{
String saida= "";
if(arrayContaEnergia.isEmpty()){
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
saida += obj.Imprimir() + "\n";
}
}
return saida;
}
public String exibirContaEconomica()
{
String saida= "";
if(arrayContaEnergia.isEmpty())
{
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
.....
}
}
return saida;
}
public float exibirConsumoMedioKw()
{
String saida= "";
float total = 0;
float totalMedia=0;
ContaEnergia conta = new ContaEnergia();
if(arrayContaEnergia.isEmpty()){
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
total+= obj.getQtdeKWConsumidos();
}
totalMedia = total / arrayContaEnergia.size();
}
return totalMedia;
}
}
No método “exibirContaEconomica” preciso exibir o menor valor que o usuário cadastrou no arraylist que fui preechendo e como disse até agora não consegui fazer…
Obrigado
[quote=SirSmart]Cara desculpa mas como sou muito novo em java não sei muito bem fazer a comparação e acabei não entendendo a maneira que vc fez. Vou postar minha classe e como estou fazendo e se vc puder me ajudar eu agradeço.
Segue:
package maisenergia;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.JOptionPane;
public class GerenciaContasEnergia {
ArrayList<ContaEnergia> arrayContaEnergia;
public GerenciaContasEnergia()
{
arrayContaEnergia = new ArrayList();
}
public void adicionarContaEnergia(ContaEnergia conta)
{
arrayContaEnergia.add(conta);
}
public ContaEnergia buscarContaEnergia(int contaEnergia)
{
ContaEnergia conta = new ContaEnergia();
for (ContaEnergia obj : arrayContaEnergia)
{
if(obj.getNumeroConta() == contaEnergia)
{
//return obj;
conta.setNomeEndereco(obj.getNomeEndereco());
conta.setNumeroConta(obj.getNumeroConta());
conta.setQtdeKWConsumidos(obj.getQtdeKWConsumidos());
conta.setValorKWUnitario(obj.getValorKWUnitario());
}
}
return conta;
}
public String listarTodas()
{
String saida= "";
if(arrayContaEnergia.isEmpty()){
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
saida += obj.Imprimir() + "\n";
}
}
return saida;
}
public String exibirContaEconomica()
{
String saida= "";
if(arrayContaEnergia.isEmpty())
{
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
.....
}
}
return saida;
}
public float exibirConsumoMedioKw()
{
String saida= "";
float total = 0;
float totalMedia=0;
ContaEnergia conta = new ContaEnergia();
if(arrayContaEnergia.isEmpty()){
JOptionPane.showMessageDialog(null, "Nenhuma conta cadastrada!!");
}
else
{
for (ContaEnergia obj : arrayContaEnergia)
{
total+= obj.getQtdeKWConsumidos();
}
totalMedia = total / arrayContaEnergia.size();
}
return totalMedia;
}
}
No método “exibirContaEconomica” preciso exibir o menor valor que o usuário cadastrou no arraylist que fui preechendo e como disse até agora não consegui fazer…
Obrigado[/quote]
Tem como passar apenas o enunciado do exercicio ?
O enunciado do exercício é esse:
Criar a Classe GerenciaContasEnergia que tenha um atributo ArrayList do tipo ContaEnergia. Os seguintes métodos devem ser implementados:
adicionarContaEnergia(): adicionar uma conta de energia na lista.
buscarContaEnergia(int numero): buscar uma conta de energia pelo número da Conta. Este método deve retornar um objeto ContaEnergia.
listarTodas(): visualizar todos as contas de energia da lista. Este método deve retornar uma String. Fazer validação para lista vazia.
exibirContaEconomica(): exibir nome do cliente e quantidade KW consumidos da conta de energia mais econômica. Fazer validação para lista vazia.
exibirConsumoMedioKw(): exibir o consumo médio de KW de todas as contas armazenadas na lista. Fazer validação para lista vazia.
No caso o método é exibirContaEconomica
Abraço
Espero que ajude… deve ser isso mais ou menos… rs
Classe ContaEnergia
public class ContaEnergia {
private int numero;
private String nome;
private String endereco;
private float qtdeKW;
private float valorKW;
public ContaEnergia() {
}
public String imprimir(ContaEnergia conta) {
return new StringBuilder()
.append("\nNome: ").append(conta.getNome())
.append("\nNumero da Conta: ").append(conta.getNumero())
.append("\nEndereço: ").append(conta.getEndereco())
.append("\nQuantidade de KW: ").append(conta.getQtdeKW())
.append("\nValor KW: ").append(conta.getValorKW())
.append("\n\n").toString();
}
// ----------------- Getters e Setters ---------------- //
public int getNumero() {
return numero;
}
public void setNumero(int numero) {
this.numero = numero;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public float getQtdeKW() {
return qtdeKW;
}
public void setQtdeKW(float qtdeKW) {
this.qtdeKW = qtdeKW;
}
public float getValorKW() {
return valorKW;
}
public void setValorKW(float valorKW) {
this.valorKW = valorKW;
}
}
Classe GerenciaContasEnergia
public class GerenciaContasEnergia {
private List<ContaEnergia> contaEnergia = null;
public GerenciaContasEnergia() {
this.contaEnergia = new ArrayList<>();
}
public void adicionarContaEnergia(ContaEnergia conta) {
contaEnergia.add(conta);
}
public ContaEnergia buscarContaEnergia(int numero) {
ContaEnergia conta = null;
for(ContaEnergia c : contaEnergia){
if(c.getNumero() == numero){
conta = c;
}
}
return conta;
}
public String listarTodas() {
String list = "";
for(ContaEnergia c : contaEnergia){
list = new StringBuilder(list).append(c.imprimir(c)).toString();
}
return contaEnergia.isEmpty() ? "Lista vazia !!" : list;
}
public String exibirContaEconomica() {
float menorValorConta = Float.MAX_VALUE;
ContaEnergia menorConta = null;
for(ContaEnergia c : contaEnergia){
if(c.getValorKW() < menorValorConta){
menorValorConta = c.getValorKW();
menorConta = c;
}
}
return contaEnergia.isEmpty() ? "Lista Vazia !!" : dadosCliente(menorConta);
}
public String exibirConsumoMedioKw() {
float soma = 0.0f;
for(ContaEnergia c : contaEnergia){
soma += c.getValorKW();
}
return contaEnergia.isEmpty() ? "Lista Vazia !!" :
String.valueOf(soma / contaEnergia.size());
}
private String dadosCliente(ContaEnergia conta) {
return new StringBuilder().append("Nome: " ).append(conta.getNome())
.append("\nNúmero da Conta: ").append(conta.getNumero())
.append("\nQuantidade Consumida: ").append(conta.getQtdeKW()).toString();
}
}
Classe TesteConta – Exemplo
[code]
public class TesteConta {
public static void main(String[] args) {
GerenciaContasEnergia gerConta = new GerenciaContasEnergia();
ContaEnergia nConta1, nConta2;
nConta1 = new ContaEnergia();
nConta2 = new ContaEnergia();
//Cadastra conta 1
nConta1.setNome("Carla");
nConta1.setEndereco("Rua Miranda");
nConta1.setNumero(2);
nConta1.setQtdeKW(53);
nConta1.setValorKW(34.95f);
gerConta.adicionarContaEnergia(nConta1);
//Cadastra conta 2
nConta2.setNome("Rafael");
nConta2.setEndereco("Rua Pereira");
nConta2.setNumero(5);
nConta2.setQtdeKW(145);
nConta2.setValorKW(69.89f);
gerConta.adicionarContaEnergia(nConta2);
//Exibe todas as Listas
System.out.println("----- Lista de Cadastrados ----");
System.out.print(gerConta.listarTodas());
//Exibe a menor Conta
System.out.println("---- Conta mais Economica -----\n");
System.out.print(gerConta.exibirContaEconomica());
//Exibe a média das Contas
System.out.println("\n\n---- Consumo Médio -----\n");
System.out.print("Consumo Médio de: " + gerConta.exibirConsumoMedioKw());
//Exibe resultado da Busca
System.out.println("\n\n---- Buscar Cliente -----");
resultBusca(gerConta, 5);
}
private static void resultBusca(GerenciaContasEnergia cliente, int numero) {
ContaEnergia cliEnergia = cliente.buscarContaEnergia(numero);
if(cliEnergia == null){
System.out.print("\nCliente não cadastrado !!");
}else{
System.out.println(cliEnergia.imprimir(cliEnergia));
}
}
}
[/code] Faça o teste… até
Galera muito obrigado pela ajuda, agora deu certo…
Abraço a todos pela ajuda…