Desenvolva um programa, utilizando a classe Scanner, que obtenha 10 valores
de entrada e identifique o maior valor, o menor e a diferença entre os valores.
public static void main(String[] args) {
int i,aux = 0;
int vetor[]= new int [10];
Scanner leitor= new Scanner(System.in);
int maior = 0,menor =0;
for(i=0;i<= vetor.length-1;i++){
System.out.print("Digite 10 valores : ");
vetor[i]=leitor.nextInt();
}
for(i = 0;i<= vetor.length-1;i++){
if(vetor[i]>maior){
maior= vetor[i];
}
if(vetor[i]<menor){
menor=vetor[i];
}
aux=maior - menor;
}
System.out.println("o Menor valor digitado : "+menor);
System.out.println("O maior valor digitado : "+maior);
System.out.println("A diferença é : "+ aux);
}
A saída do valor Menor esta saindo “0” não sei o motivo
os demais resultados estão saindo certo .
package javaapplication89;
import java.util.Arrays;
import java.util.Scanner;
public class GerarOrganizar {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int[] array = new int[10];
for (int i = 0; i < 10; i++) {
System.out.println("Digite o numero:");
int num = entrada.nextInt();
array[i] =num;
}
Arrays.sort(array); //isso ordena do menor para o maior
int maior=array[9]; //o maior valor fica na última posição
int menor=array[0]; // e o menor na primeira
System.out.println("Maior = "+maior+"\nMenor = "+menor+"\nDiferença = "+(maior-menor));
}
}
inicializar o maior com o menor valor possivel, e o menor com o maior valor possivel é uma ( Math.MAX_INT por exemplo ). outra forma é vc ler o primeiro elemento e atribuir as duas variaveis, e começar a comparar do proximo valor ate o final.
agora a diferença ( aux ? aux ?? de um nome melhor pra variavel … como diff se vc tem preguiça ) vc só precisa calcular uma vez.
a vantagem de vc verificar o maior e menor a cada laço é que vc tem 2*N comparações ( sendo N o numero de items a comparar ) enquanto que, se vc ordenar o vetor, vc vai gastar bem mais do que N operações ( quicksort é N log N no melhor caso ). alias se vc ler em um loop e em seguida comparar vc não precisa de array, podendo comparar centenas ou mesmo uma infinita sequencia de numeros sem gastar muita memoria.
No lugar de designar valores para maior e menor, tome como referência que sempre o menor e o maior valores serão o primeiro valor digitado pelo usuario ou como no seu caso, o primeiro valor da array, ai depois é só comparar com os demais valores.
Pelo enunciado que você postou, Desenvolva um programa, utilizando a classe Scanner, que obtenha 10 valores de entrada e identifique o maior valor, o menor e a diferença entre os valores., isso tem cara de ser um teste, ou avaliação, muito provavelmente eles não querem que você use, recursos da linguagem, e sim lógica…
Seu programa está sempre retornando menor como “0” porque você declarou ele em : int maior = 0,menor =0;
E sua comparação :
if(vetor[i]<menor){
menor=vetor[i];
}
Bem se você souber os valores existentes no array ai você usa essa sintaxe que você usou
“int maior = 0 e int menor = o maior valor que você sabe do array”
No caso da sua atividade ai não tem como saber os valores digitados então o mais certo de usar seria o:
"maior = Integer.Min_Value e menor = Integer.Max_value
Inicialize as duas com o conteúdo do primeiro elemento do vetor;
Itere o vetor a partir do segundo elemento e vá comparando o conteúdo:
se o conteúdo for maior que a variável maior, então maior recebe o valor do conteúdo;
se o conteúdo for menor que a variável menor, então menor recebe o valor do conteúdo;
Eu estou no inicio aprendendo a programar, então eu peguei uma questão dessa que pedia maior e menor no vetor, e como eu sou uma lenda pra pensar, foi sofrido, mas depois que você soluciona, de fato você se sente uma lenda…
então eu fiz assim e deu certo:
maior = 0, menor = vetor[0];
for (int i = 0; i < n; i++) {
if (vetor[i] > maior) {
maior = vetor[i];
}else if(vetor[i]<menor) {
menor = vetor[i];
}
isso é só um trechinho do código, antes disso você precisa instanciar o vetor e em seguida dependendo do que está desenvolvendo, você atribui a variável “menor” o primeiro valor do vetor que fica na posição zero(0), não tem erro.