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.
publicstaticvoidmain(String[]args){inti,aux=0;intvetor[]=newint[10];Scannerleitor=newScanner(System.in);intmaior=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 .
rapaz eu digitei o numero negativo e mostrou o numero negativo
mas eu continuo com a duvida
peczenyj3 likes
vc inicia a variavel menor como 0
vc digitou: 1, 2, 3
como vc vai encontrar o menor valor?
Solucao aceita
Eslley1 like
Eu fiz assim:
packagejavaapplication89;importjava.util.Arrays;importjava.util.Scanner;publicclassGerarOrganizar{publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);int[]array=newint[10];for(inti=0;i<10;i++){System.out.println("Digite o numero:");intnum=entrada.nextInt();array[i]=num;}Arrays.sort(array);//isso ordena do menor para o maiorintmaior=array[9];//o maior valor fica na última posiçãointmenor=array[0];// e o menor na primeiraSystem.out.println("Maior = "+maior+"\nMenor = "+menor+"\nDiferença = "+(maior-menor));}}
M
Messias_Ferreira1 like
Valeu cara nem sabia que dava para fazer isso
igor_ks1 like
Traz sempre 0 porque vc incializa com 0, entao qualquer valor > 0 que vc digitar, nao vai entrar na sua condicao if(vetor[i]<menor)
peczenyj2 likes
existem varias estrategias.
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.
B
brunosm20101 like
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.
M
Messias_Ferreira1 like
Entendi!!
a questão do aux, estou aprendendo ainda,
então não estou me preocupando com a nomenclatura ( por enquanto )
e sim com a logica
o aux só foi um exemplo para identificar de uma forma mais fácil
abs;
L
L30C4RV
Messias,
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;
tenta iniciar os valores menor e maior desse jeito:
int maior = Integer.MIN_VALUE;
int menor = Integer.MAX_VALUE;
ve se vai.
M
Messias_Ferreira
refis
public static void main(String[] args) {
inti,calculo=0;intvetor[]=newint[10];Scannerleitor=newScanner(System.in);intmaior=0,menor=0;for(i=0;i<=vetor.length-1;i++){System.out.print("Digite 10 valores : ");vetor[i]=leitor.nextInt();}Arrays.sort(vetor);for(i=0;i<=vetor.length-1;i++){{if(vetor[i]>=maior){maior=vetor[i];}if(vetor[i]<=vetor[0]){menor=vetor[i];}calculo=maior-menor;}}System.out.println("o Menor valor digitado : "+menor);System.out.println("O maior valor digitado : "+maior);System.out.println("A diferença é : "+calculo);}
TalonNoxus
Se você vai utilizar o Arrays.sort(), o segundo for é desnecessario
V
Viano_Di_Napoli
oi pessoal ajuda ai nisso…Crie um método que receba 3 números e retorne o maior valor, use o método Math.max().
E
emerson22
Não Sei :
E
emerson22
ai sim
M
Matews_Gomes
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
staroski
Crie uma variável menor e outra maior;
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;