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.
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);
}
@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
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…
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);
}
}
[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).
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…
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
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.