Desenvolva classe e métodos, necessários para receber números inteiros e positivos, seqüencialmente, um a um,
até que seja fornecido um número negativo (Sentinela). Quando isto ocorrer, deverá ser apresentado o menor dos
números ímpares positivos inseridos. Os números pares, eventualmente inseridos, devem ser ignorados na elaboração
do resultado.
Exemplo: Menor ímpar: Entrada 1: 2
Entrada 2: 9
Entrada 3: 4
Entrada 4: 5
Entrada 5: -1 (Sentinela: Término do laço de entrada)
Saída: Menor ímpar = 5
sentinela é qnd o loop nao termina .... é como se fosse um loop infinito ...
qm determina qnd ira sair do loop é o usuario ..
ex.:
while(true){
System.out.println("Digite um numero. Se quiser sair digite -1); if(numeroDigitado == -1) {System.out.println("TCHAU");break;}
//fazloginca
}
+ - isso ae !
espero ter ajudado
gui_sv
Verificação para saber se o numero é par
if(numeroDigitado % 2 == 0) { // o % é para pegar o resto da divisao ...
System.out.print("NUMERO É PAR ENTAO DEVO IGNORAR ESSE CARA");
}
vlwww
dalvac
Esse código abaixo deve funcionar…
Caso não entenda alguma coisa, é só perguntar.
importjava.util.Scanner;publicclassProblema15{privatestaticintmenorImpar=Integer.MAX_VALUE;publicstaticvoidmain(String[]args){Scannerentrada=newScanner(System.in);intnumero=entrada.nextInt();while(numero>0){verificaNumero(numero);numero=entrada.nextInt();}if(Problema15.menorImpar>0){System.out.println("O menor ímpar inserido foi: "+Problema15.menorImpar);}else{System.out.println("Não foi inserido nenhum número ímpar");}}privatestaticvoidverificaNumero(intnumero){if(numero%2==1&&numero<Problema15.menorImpar){Problema15.menorImpar=numero;}}}
abelgomes
certo pessoal, lembrando que ele quer que todos os numeros sejam armazenados em algum lugar…pelo menos é que o exemplo mostra… entao fica mais ou menos assim:
packageguj;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassSentinela{staticBufferedReaderentrada=newBufferedReader(newInputStreamReader(System.in));publicstaticvoidmain(String...args)throwsNumberFormatException,IOException{intnumeros[]=newint[Integer.MAX_VALUE];inti=0;intmenor=Integer.MAX_VALUE,impar;while(true){System.out.print("Entre com um numero: ");numeros[i]=Integer.parseInt(entrada.readLine());if(numeros[i]<0){for(intj=0;j<=i-1;j++){if(numeros[j]%2!=0){impar=numeros[j];if(impar<menor){menor=impar;}}System.out.println("Entrada"+j+": "+numeros[j]);}System.out.println("O menor numero impar é: "+menor);break;}i++;}}}
D
D_Rocha
quando eu vou compilar esse código aparece esse erro
java.lang.NoClassDefFoundError: guj/Sentinela
Exception in thread "main"
abelgomes:
certo pessoal, lembrando que ele quer que todos os numeros sejam armazenados em algum lugar…pelo menos é que o exemplo mostra… entao fica mais ou menos assim:
packageguj;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassSentinela{staticBufferedReaderentrada=newBufferedReader(newInputStreamReader(System.in));publicstaticvoidmain(String...args)throwsNumberFormatException,IOException{intnumeros[]=newint[Integer.MAX_VALUE];inti=0;intmenor=Integer.MAX_VALUE,impar;while(true){System.out.print("Entre com um numero: ");numeros[i]=Integer.parseInt(entrada.readLine());if(numeros[i]<0){for(intj=0;j<=i-1;j++){if(numeros[j]%2!=0){impar=numeros[j];if(impar<menor){menor=impar;}}System.out.println("Entrada"+j+": "+numeros[j]);}System.out.println("O menor numero impar é: "+menor);break;}i++;}}}
;)
abelgomes
tem que V que o nome da minha Classe é Sentinela e esta no pacote GUJ…onde esta seua classe…qual o nome do arquivo.java? tem que ser igual…
nesse caso altere o nome do pacote para o seu pacote…ou retire se nao estiver usando pacote… e altere o nome da classe para o nome igual do seu arquivo.java
D
D_Rocha
blz consegui aqui, eu alterei para o nome da Classe mesmo …
só o erro q da agora é qd vms definir o tamanho do Array, ele aparece esse erro …
Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at Sentinela.main(Sentinela.java:12)
abelgomes:
tem que V que o nome da minha Classe é Sentinela e esta no pacote GUJ…onde esta seua classe…qual o nome do arquivo.java? tem que ser igual…
nesse caso altere o nome do pacote para o seu pacote…ou retire se nao estiver usando pacote… e altere o nome da classe para o nome igual do seu arquivo.java
abelgomes
é a sua JVM coloca o tamanho do vetor pra 100
dalvac
Olá abelgomes,
segundo o enunciado do problema e o exemplo dado, não há indícios de que os números inseridos devam ser armazenados, e sim apenas processados!
No entanto, supondo que realmente deva-se armazenar os dados, a solução que vc deu não é adequada!
Para resolver o problema vc utilizou um array de inteiros de tamanho [telefone removido] (Integer.MAX_VALUE) (linha 10 do seu código).
Lembrando que em java uma variável int tem tamanho 4 bytes (32-bits), com a sua solução você está reservando [telefone removido] bytes para tal array, que equivale aproximadamente à 8GBytes (haja memória RAM).
e tem como colocar um valor indefinido?
pq eu coloquei 4 para testar e ele roda, mas qd vou digitar o quinto falor ele estou e para o rodar
desculpe a minha ignorancia caso eu esteja falando merda iajAHUhauHAU
thiago_rainmaker
Kara ta ai, tem n maneiras de resolver esse problema, fiz aki a q achei mais rápida
flwwww
importjavax.swing.*;classProblema{publicstaticvoidmain(Stringargs[]){intnumIni,numImp;numIni=0;numImp=[telefoneremovido];while(numIni>-1){numIni=Integer.parseInt(JOptionPane.showInputDialog("Informe um número"));if(numIni%2==0||numIni<=0){continue;}else{if(numIni<numImp){numImp=numIni;}System.out.println(numIni);}}System.out.println(numImp);}}
D
D_Rocha
testei aqui e rodou man!
vlw mesmooo
thiago_rainmaker:
Kara ta ai, tem n maneiras de resolver esse problema, fiz aki a q achei mais rápida