Maior número

8 respostas
java
V

Olá pessoas, eu estou tendo dificuldades em terminar um programa bem simples. É o seguinte eu quero receber uma sequência de números inteiros positivos e ele tem que parar de ler quando eu colocar um número (0) e me dizer o número maior. Por exemplo: se eu colocar essa sequência: 4 5 6 7 8 0 ; tem que ter essa saída: 8.
Eu fiz usando arrays só que ele tá lendo quando dou um enter e quero que leia quando der espaço. E ele fica limitado a um certo número na sequência tipo 5 como tá aí. Quero que ele leia até quando chegar no zero.
Ficarei muito grato com quem puder me ajudar!

import java.util.Arrays;
import java.util.Scanner;

public class maior {

public static void main(String[] args) {
	
	        Scanner in = new Scanner (System.in);  
	       
	        int valor[] = new int[5];  
	        for(int i = 0; i < valor.length; i++){  
	            valor[i] = in.nextInt();  
	        }  
	        Arrays.sort(valor);
	        System.out.println(valor[1]);  
	    }  
	}

8 Respostas

H

Arrays.sort é meio que usar uma bazuca pra matar um mosquito :slight_smile:. Basta varrer o array e associar a uma variável. Segue exemplo:

public class TesteMaior {
	public static void main(String[] args) {
		int[] valores = { 4, 5, 6, 7, 8, 0 };
		System.out.println(maiorValor(valores));
	}

	public static int maiorValor(int[] valores) {
		int maiorValor = valores[0];
		for (int valor : valores) {
			if (valor > maiorValor) {
				maiorValor = valor;
			}
		}
		return maiorValor;
	}
}
V

Mas nesse seu exemplo, como poderia receber os valores do teclado? e terminasse a leitura quando recebesse o zero?

G

@v7136 Para resolver a questão da leitura do teclado… use o Scanner como esta fazendo…
Conhece o while?

pode user:

do seu código while(valor != 0);

O do faz teu loop rodar a primeira vez e você vai adicionando valores no teu array como o @lucasfranca deu exemplo…

V

Conheço, só que tentei usar o Scanner e não consegui. Eu me confundi com os dois public static do código do lucas.

G

São apenas dois métodos, um main para executar o Java e o outro que retorna o maior numero de um array de inteiros.

V

Eu uso o do while no Scanner dento do método para executar o java ?

H

Se não for necessário armazenar em um Array, você pode fazer:

import java.util.Scanner;

public class TesteMaior {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);

		// permite a comparação de apenas valores negativos, se atribuir maiorValor a 0 inicialmente, 0 seria
		// o maior valor de uma sequencia negativa
		int maiorValor = Integer.MIN_VALUE;
		int entrada = 0;

		System.out.println("Digite um valor, ou 0 para sair:");

		do {
			entrada = in.nextInt();
			if (entrada > maiorValor && entrada != 0) {
				maiorValor = entrada;
			}
		} while (entrada != 0);

		System.out.println(maiorValor);
	}

}
V

Muito obrigado!

Criado 4 de abril de 2016
Ultima resposta 4 de abr. de 2016
Respostas 8
Participantes 3