[Dúvida] Ler maior: Acumular números digitados pelo usuário

Boa noite… Estou com uma certa dúvida.

Classe main:

if(opcao==5){
    int i = 1;
    while(i<=15){
            
    System.out.println("Digite "+i+"° valor: ");
    a = ler.nextInt();    
    
    i++;
} 
   cal.lerMaior(a);
}  

Classe calculos:

void lerMaior(int numero){
int maior = Integer.MIN_VALUE;
for(int i = 0; i<=15; i++){
// Lógica (?)
}
if(numero>maior){
maior = numero;
}

System.out.println("O maior é: "+maior);
}

… Digamos que eu não estou conseguindo “acumular” os valores digitados pelo usuário, para no final jogar na tela o número maior. Por favor alguma ajuda? Não consigo pensar em nenhuma maneira… Argt.

Obrigada!

Olá,
Seria algo assim que voce quer?

[code]public class MostraNumeroMaior {

public static void main(String[] args) {

	int result = Integer.MIN_VALUE;
	int contador = 0;
	
	Scanner scan = new Scanner(System.in);

	do {
		System.out.println("Digite um valor : ");
		int num = scan.nextInt();

		if (num > result) 
			result = num;
		
		contador++;
	
	} while (contador <= 5);

	System.out.println("Maior numero digitado foi : " + result);
}

}[/code]Abraços.

seria melhor vc ir colocando em um vetor, para que qndo vc inserir todos, ai vc comparar cada um para pegar o maior…
entendeu??
vlw

@danieldomingues86
Na realidade eu gostaria de fazer em classes separadas, mas não consigo. Meu professor mandou fazer uma classe para a lógica e outra para aplicar a lógica. Mas, não consigo acumular os 15 números digitados para depois o meu programa achar o maior. Penso que falta um acumulador mas, não consigo aplica-lo e já tentei de diversas formas.

@Dami? Cunha
Eu ainda não conheço arrays, por isso meu programa está meio “primitivo”. E não li sobre isso ainda porque não quero confundir as coisas! heh

Obrigada.

Bom dia Francine,

Você sabe que são fixos 15 números que devem ser lidos…confere?
Esquecendo arrays e tudo mais…vamos imaginar o seguinte:
Você deve ter 2 classes: 1 que vai armazenar os 15 números digitados e o maior número…e outra que vai instanciar a 1a e começar a guardar os números que você digitou…e ao final apresentar o maior…certo?

Uma fórmula para maior e menor número seria a seguinte:
maior = 0;
todo número que vc digitar depois…compara se é >maior…se for, maior=numero_digitado…e assim por diante até terminar os 15…

e para menor:
menor = 100;
todo número que vc digitar depois…compara se é <menor…se for, menor=numero_digitado…e assim por diante…

espero ter ajudado…

[]'s
>

ok…
intao sem vetor, a forma mais simples é assim…


import java.util.Scanner;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Damiao
 */
public class MaiorNumero
{
   public static void main(String args[])
   {
      Scanner sc = new Scanner(System.in);
      int cont=0,num=0,maior=0;

      do{
         System.out.print("Informe o numero: ");
         num = sc.nextInt();
            if(num > maior)
               maior = num;
         cont++;
      }while(cont < 15);

      System.out.print("O maior é: "+maior);
   }
}

vlw

[quote=Dami? Cunha]ok…
intao sem vetor, a forma mais simples é assim…


import java.util.Scanner;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Damiao
 */
public class MaiorNumero
{
   public static void main(String args[])
   {
      Scanner sc = new Scanner(System.in);
      int cont=0,num=0,maior=0;

      do{
         System.out.print("Informe o numero: ");
         num = sc.nextInt();
            if(num > maior)
               maior = num;
         cont++;
      }while(cont < 15);

      System.out.print("O maior é: "+maior);
   }
}

vlw[/quote]

Seu programinha tem um bug!!! Se eu só digitar valores negativos, ele vai falar que o maior é zero.
Para evitar isso, assuma que o primeiro número que o usuário digitou é o maior (o que é verdade afinal ele só terá digitado um número então ele é o maior) e use esse número para comparar se é maior que o segundo, sempre armazenando o maior (se o segundo número > primeiro; maior = segundo numero).

ok?

não sei se ela quer com valores negativos…
realmente só fiz pra positivos…
vlw

Boa noite pessoal! Agradeço a atenção dispensada…!

@DianaPJ
Bom, eu entendo a lógica mas estou com dificuldade em aplica-la… Pois não estou conseguindo passar o “número” para a classe de “calculos” e quando o teste começa ele jogana tela somente o ultimo número digitado… Como acumulo esses números? =s

@Dami? Cunha Hmm uma dúvida, porque tenho que declarar o Scanner na classe calculos? Na classe main não é o suficiente? Há outro objetivo?

@renamed No momento não estamos entrando em maiores detalhes, necessito verificar se a minha logica funciona! E isso não está acontecendo…

Obrigada!

isso mesmo, só precisa no main mesmo…
foi pq eu fiz um unico metodo, + como vc esta separandoe dois metodos, só precisa declarar ele onde vc vai usar…
vlw


 public static void main(String ...xunda) {  
		   List<Integer> listInteger = new ArrayList<Integer>();
	       Scanner sc = new Scanner(System.in);
	       do{  
	          System.out.print("Informe o numero: ");  	         
	          listInteger.add(sc.nextInt());	             
	       }while(listInteger.size() < 15);
	       System.out.print("O maior é: "+Collections.max(listInteger));  
	    }  

:slight_smile:

Naum tinha visto que era em classes separadas,pois bem:

public class principal()
	   public static void main(String ...xunda) {  
		   List<Integer> listInteger = new ArrayList<Integer>();
	       Scanner sc = new Scanner(System.in);
	       do{  
	          System.out.print("Informe o numero: ");  	         
	          listInteger.add(sc.nextInt());	             
	       }while(listInteger.size() < 15);
	       System.out.print("O maior é: "+Calculos.getMaiorNumero(listInteger));  
	    }  
	)
	
	public class Calculos{
		public static Integer getMaiorNumero(List<Integer> listInteger){
			return Collections.max(listInteger);
		}
		
	}
  

Sem usar akele monte de contadores,pra que reinventar a roda a classe collections tem muita coisa pronta pra quem trabalha com listas e tal,e sempre bom ante de escreve codigo ,ainda mais pra quem esta comecando dar uma olhada na api.

[quote=lgweb]Naum tinha visto que era em classes separadas,pois bem:

public class principal()
	   public static void main(String ...xunda) {  
		   List<Integer> listInteger = new ArrayList<Integer>();
	       Scanner sc = new Scanner(System.in);
	       do{  
	          System.out.print("Informe o numero: ");  	         
	          listInteger.add(sc.nextInt());	             
	       }while(listInteger.size() < 15);
	       System.out.print("O maior é: "+Calculos.getMaiorNumero(listInteger));  
	    }  
	)
	
	public class Calculos{
		public static Integer getMaiorNumero(List<Integer> listInteger){
			return Collections.max(listInteger);
		}
		
	}
  

Sem usar akele monte de contadores,pra que reinventar a roda a classe collections tem muita coisa pronta pra quem trabalha com listas e tal,e sempre bom ante de escreve codigo ,ainda mais pra quem esta comecando dar uma olhada na api.[/quote]

o problema é que ela ta iniciando, eu antes tinha sugerido ela usar vetor, + ela dise q não tinha visto ainda…
itendeu??? não adianta fazer por arraylist…
vlw

Pois é, eu te mostrei o problema na lógica.
Assumir o maior como zero pode não funcionar. Na verdade, não vai em alguns casos.
Acredito que isso não seja “entrar em maiores detalhes” e sim fazer um algoritmo que funcione corretamente.