Olá outra vez, galera, estou tentando aprender a mexer com ArrayList, consegui progredir com boa parte do código, no entanto, eu preciso de ideias de como implementar a parte que falta em sobre encontrar um número e mostrar a posição dele.
//Inicializações de novos objetos
Scanner ler = new Scanner(System.in);
ArrayList vetor = new ArrayList();
StringBuffer sbk = new StringBuffer();
int numero;
//Entrada de dados
System.out.println("Insira um número para iniciar: ");
int qtdVetor = ler.nextInt();
//Repetição que adiciona números à lista
for(int x = 0; x<qtdVetor; x++) {
System.out.println("Digite um número para inserir à lista: ");
numero = ler.nextInt();
vetor.add(numero);
}
//Saída de dados da lista
System.out.println(vetor.get(1));
System.out.println("Lista é composta por:"+vetor);
}
}
Eu encontrei um código que fica comparando com variáveis “maior” e “menor” pra exibir depois, alguém que tenha esse tipo de código poderia me explicar como ele funciona?
maior;
if a > b {
maior = a;
} else {
maior = b;
}
Se fossem 3 variáveis:
if a > b {
maior = a;
} else {
maior = b;
}
if c > maior {
maior = c;
}
Se fossem 4 variáveis:
if a > b {
maior = a;
} else {
maior = b;
}
if c > maior {
maior = c;
}
if d > maior {
maior = d;
}
Observe que repetiu o ‘c’ e o ‘d’, então podemos fazer o seguinte para repetir com todos:
maior = a; // o maior é a variável 'a'
if a > maior {
maior = a;
}
if b > maior {
maior = b;
}
if c > maior {
maior = c;
}
if d > maior {
maior = d;
}
Se fosse um vetor:
maior = vetor[0]; // o maior é o primeiro
loop {
if vetor[x] > maior {
maior = vetor[x];
}
}
Para descobrir a posição do maior, o ArrayList tem o método indexOf:
posicaoDoMaior = vetor.indexOf(maior);
Outra ideia:
// Java 8
int maior = vetor.stream().mapToInt(x -> (int) x).max().get();
int posicaoDoMaior = vetor.indexOf(maior);
Outra ideia:
Object[] clone = vetor.toArray(); // cria uma cópia
Arrays.sort(clone); // ordena a cópia
int maior = clone[clone.length - 1]; // obtem o maior
int posicaoDoMaior = vetor.indexOf(maior);
Eu fiz isso aqui, mas o vetorNovo.get(v) tá indicando erro, como que eu faço pra apontar dentro de um If??
ArrayList vetorNovo = new ArrayList();
System.out.println("Digite um número para iniciar: ");
for (v = 0; v < vetorNovo.size()-1; v++) { //Ler o vetor
System.out.print("Digite um numero: ");
vetorNovo.add(v);
if (vetorNovo.get(v) < maior) { //Grava o maior valor de vetor[v] em maior
maior = vetorNovo.get(v);
}
if (vetorNovo.get(v) > menor) { //Grava o menor valor de vetor[v] em menor
menor = vetorNovo.get(v);
}
}
int posicaoDoMenor = vetorNovo.indexOf(menor);
System.out.print("\nO menor número é: " + menor);
System.out.println("\nSua posição é: " + posicaoDoMenor);
}