/*
* Funcao: Le uma sequencia de números inteiros positivos da entrada,
* imprime o menor e o maior
* Condicao de final de programa: entrada negativa
* Autor: Henrique
*/
import java.util.Scanner;
public class MostraMinMax {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = 1; // numero da entrada de dados. começa em um
int num; // guarda a entrada de dados
int nMin = 0; // guarda o valor minimo da sequencia
int nMax = 0; // guarda o valor máximo da sequencia
do {
System.out.print("Entre com o inteiro # " + n + ": ");
num = sc.nextInt();
if (num >= 0) {
if (n == 1) { // guarda a primeira entrada
nMin = num;
nMax = num;
} else {
if (num < nMin) nMin = num;
if (num > nMax) nMax = num;
}
n++; // incrementa o contador
}
} while (num >= 0); // sai se digitamos um numero negativo
n--;
if (n == 0) {
System.out.println("Nao foi feita entrada valida...");
} else {
System.out.println("O numero de entradas digitadas: " + num);
System.out.println("O menor numero : " + nMin);
System.out.println("O maior numero : " + nMax);
}
}
}
Notem alguns pontos bacanas deste programinha:
- usamos a estrutura de programação
- do {comandos} while {condição de parada}
- o comando if quando tem somente um comando na condição then pode ser escrito sem as chaves usando o formato
- if (testes) comando;
- a classe Scanner lê um inteiro usando nextInt, mas possui ainda diversas outras variações como nextFloat, nextLine, nextByte, nextBoolean etc. Vale a pena dar uma olhada na definição da classe na documentação do Java (veja aqui).
- reparem na criação do objeto sc da classe Scanner:
- new Scanner(System.in);
- a criação é feita utilizando uma InputStream, no nosso caso é um System.in que é a InputStream padrão.
- O interessante desta solução é que a InputStream poderia ser uma porta serial, um arquivo local ou remoto, um site ...
Existem algumas variações que podem ser feitas no programa, como por exemplo eliminar o teste "if (n == 1) { ...". Como fazer isto? Veja abaixo o pedaço do código alterado:
// usamos o subterfúgio de inicializar as variáveis com os valores minimo e
// máximo para uma variável inteira.
// note que nMin recebe o valor MÁXIMO e vice versa int nMin = Integer.MAX_VALUE; // guarda o valor minimo da sequencia
int nMax = Integer.MIN_VALUE; // guarda o valor máximo da sequencia
do {
System.out.print("Entre com o inteiro # " + n + ": ");
num = sc.nextInt();
if (num >= 0) {
if (num < nMin) nMin = num;
if (num > nMax) nMax = num;
n++; // incrementa o contador
}
Nenhum comentário:
Postar um comentário