dúvida exercício

aplicativo que lê cinco inteiros e determina e imprime o maior e menor inteiro do grupo

não estou conseguindo imprimir o menor, ele só imprime zero, q é o valor recebido na declaração, tenho que criar uma condição para q quando chegar no if do menor ele não seja = a zero.

import javax.swing.*; 
public class cinco { 

public static void main(String[] args) { 
  String msg = ""; 
  int valores[] = new int[5]; 
  int maior = 0;
  int menor = 0;
       
  for(int i= 0; i <=4 ; i++){ 
  valores[i] = (Integer.parseInt(JOptionPane.showInputDialog
  ("Digite o"    + " " +(i + 1)+ " " + "valor"))); 
    
    if(maior < valores[i] ) 
      maior = valores[i];  
          
    if(menor > valores[i] ) 
     menor = valores[i];  
  }
  
    
  JOptionPane.showMessageDialog 
  (null, "O maior valor é: " + maior + " \n O menor valor é: "+ menor,
  "RESULTADO", JOptionPane.PLAIN_MESSAGE); 
  
  System.exit (0);
       
} 
}

[color=“red”]Use BBCode em seus códigos: http://www.portaljava.com/home/modules.php?name=Forums&file=faq&mode=bbcode - matheus[/color]

dica: Math.max() e Math.min() :slight_smile:

outra dica:

faça assim:

int valores[] = new int[5]; 
        
 for(int i= 0; i <valores.length ; i++){ 
  valores[i] = (Integer.parseInt(JOptionPane.showInputDialog 
  ("Digite o"    + " " +(i + 1)+ " " + "valor"))); 
}

  int maior = valores[0]; 
  int menor = valores[0]; 
    
 for(int i= 1; i <valores.length ; i++){ 

    if(maior < valores[i] ) 
      maior = valores[i];  
          
    if(menor > valores[i] ) 
     menor = valores[i];  
  } 

ou seja comece considerando o primeiro valor como sendo o maior e tambem o menor e a partir do segundo valor faça as comparações…

Cara amigo, entenda seu problema, quando iguala o maior e o menor a 0(zero), terá nas comparações o seguinte:

  • Busca pelo maior

irá buscar todos os números maiores que zero, ou seja, se em seu vetor somente existirem elementos maiores que zero vc encontrará a solução correta, caso seus elementos sejam todos negativos, imprimirá que seu maior numero é zero o que não seria correto.

na busca pelo menor número, o que ocorre é o caso inverso, teste seu programa como está digitando somente números negativos, observe que o menor estará correto e o maior será zero.

A dica dada anteriormente consiste em realizar a leitura dos dados antes de comparar, porque?

Não é possível comparar elementos de um grupo sem que se tenha um parâmetro inicial, no caso da dica o primeiro elemento do vetor.

Então sempre que desejar realizar uma comparação faça-a com elementos do grupo e não com elementos externos como no seu caso o zero.

BLZ

incializa a variável menor com o valor máximo de int.

experimenta 2147483647.

abs.

ou de um jeito mais chique:

int maior = Integer.MAX_VALUE;
int menor = Integer.MIN_VALUE;

mas eu ainda acho mais coerente a ideia de começar pegando a primeira posição do vetor