Eai galera , estou com um problema na logia de um exercicio pois comecei a logia e acabei ficando sem logica :P
É O SEGUINTE TENHO QUE FAZER UMA APLICAÇÃO QUE O USUARIO DIGITE QUALQUER NÚMERO INTEIRO, E ESSA APLICAÇÃO EXIBA O MAIOR DIVISOR DO NUMERO INSERIDO E LOGO ABAIXO TODOS OS SEUS DIVISORES , MAIS TENHO QUE DIFERENCIAR DE NÚMERO PAR E ÍMPAR MAIS NÃO SENDO O PROPRIO NÚMERO(EX: 20 mairo divisor é ele msm, isso ñ pode, no caso seria o 10 que é o maior divisor de 20) [color=red]OU SEJA SE O USUÁRIO DIGITAR UM NÚMERO PAR VAI MOSTRAR O SEU MAIOR DIVISOR E LOGO ABAIXO OS SEUS DIVISORES E COM A SEGUINTE MENSAGEM "ESSE NÚMERO NÃO CONTÉM DIVISORES IMAPRES", O MESMO CASO SERVE PARA OS NÚMEROS IMPARES [/color], ENTÃO EU FIZ A ESTRUTUA AI EMBAIXO SÓ QUE ME PERDI NO MEIO NÃO SEI COMO INDENTIFICAR O MAIOR DIVISOR E NEN MOSTRAR-LO, CONSIGO ATÉ ENTÃO COM ESSA ESTRUTURA OS DIVISORES DO NÚMERO ISSO JÁ É UM MEIO CAMINHO ANDADO EU ACHO NÉ.
VLW GALERA ESPERO TER AJUDAS :D
try{aux=JOptionPane.showInputDialog(null,"Digiteumnúmero:","Entradadedados", JOptionPane.QUESTION_MESSAGE); num = Integer.parseInt(aux); aux = ""; for(int qtdCard = 1; qtdCard <= num ; qtdCard++){ if (num % qtdCard == 0 && qtdCard % 2 == 0 ){ aux += qtdCard + "\n" ; } } if(num % 2 !=0){ for(int qtdCard = 1; qtdCard <= num ; qtdCard++){ if (qtdCard % 2 != 0 ){ aux += qtdCard + "\n" ; } } } } catch(NumberFormatException nfs){ JOptionPane.showMessageDialog(null,"forneçasomentevaloresnumericos"); } JOptionPane.showMessageDialog(null,"Quantidadedenumerosdivisores:" + aux,"Divisores",JOptionPane.INFORMATION_MESSAGE);
int maiorDivisor = 0;
try {
aux = JOptionPane.showInputDialog(null, "Digite um número:",
"Entrada de dados", JOptionPane.QUESTION_MESSAGE);
num = Integer.parseInt(aux);
aux = "";
if (num % 2 == 0) {
for (int qtdCard = 1; qtdCard <= num; qtdCard++) {
if (num % qtdCard == 0 && qtdCard % 2 == 0) {
aux += qtdCard + "\n";
maiorDivisor = (qtdCard != num) ? qtdCard : maiorDivisor;
}
}
aux += "\nEste número não contém divisores impares.";
} else {
for (int qtdCard = 1; qtdCard <= num; qtdCard++) {
if (num % qtdCard == 0 && qtdCard % 2 != 0) {
aux += qtdCard + "\n";
maiorDivisor = (qtdCard != num) ? qtdCard : maiorDivisor;
}
}
aux += "\nEste número não contém divisores pares.";
}
} catch (NumberFormatException nfs) {
JOptionPane.showMessageDialog(null,
"forneça somente valores numericos");
}
JOptionPane.showMessageDialog(null, "Maior divisor: " + maiorDivisor
+ "\nQuantidade de numeros divisores: \n" + aux, "Divisores",
JOptionPane.INFORMATION_MESSAGE);
}
Veja se é isso + ou - o que vc queria.
Recomendo q faça um tratamento caso o usuário digitar o numero 0 ou 1, pois no caso do 0 não tem divisor nenhum e no caso do 1 o maior divisor é ele mesmo. Este codigo não ta tratando isso.
rmendes08
Errado, 0 é divisível por qualquer número, ocorre que é impossível determinar seu maior divisor.
Na verdade essa lógica pode ser simplificada bastante:
:arrow: Um número somente tem divisores pares se ele mesmo for par, caso contrário todos os seus divisores serão ímpares
:arrow: Se o número é par, então o seu maior divisor que não é ele mesmo é a sua metade;
:arrow: Se o número N é ímpar, então você pode achar os seus divisores partindo de N / 2 - 1 até 1 de 2 em 2, testando o módulo
robsonsm
mesmo o 0 sendo divisível por qualquer numero, acho que ao ser digitado 0 não é necessário levar isso em consideração, pois senão vc terá que listar todos os números existentes (exceto o maior, já que não é possível saber) ou impor um limite.
Talvez apenas uma mensagem explicativa.
Rauel
vlw robsonsm e o rmendes08 pela as dicas conseguiram fazer com que eu voltasse a lógica da aplicação
vlw
Rauel
pow agora tem uma aplicação que essa eu tbem estou perdido , O USUÁRIO VAI TER QUE DIGITAR O E-MAIL, E A APLICAÇÃO IRA VERIFICAR SE O E-MAIL ESTA TODO MINUSCULO CASO NÃO ESTEJA ELE SEJA TRANSFORMADO EM TODO MINUSCULO([color=red] EX: [email removido] ai no caso teria que passar todos os maisculos para minusculos para ficar assim [email removido] [/color]) E DEPOIS DISSO VERIFICAR E O EMAIL POSSUI APENAS UM @ E SE POSSUI APENAS UM PONTO(.)
[color=blue]POW QUERIA A AJUDA DE VCS PARA A LOGICA DE COMO RESOLVER ISSO [/color]
robsonsm
para transformar uma string em tudo minusculo:
nomeDaVariavel=nomeDaVariavel.toLowerCase();
para validar o email, vc pode utilizar expressão regular, por exemplo:
Pattern p = Pattern.compile("^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$");
Matcher m = p.matcher(email);
m.matches(); retorna um booleano (true) se o email corresponder a expressao.
Rauel
robsonsm, sou iniciante em java então não conheço esse metodo Pattern por isso não entendi a sua logica usada para o e-mail explica ai o codigo por favor , pois quando eu tinha comecado a fazer o codigo inicializei a variavel e fiz ela receber o e-mail do usuário e passei ela toda para minusculo usando o toLowerCase() ai verifiquei se o email possuia apenas 10 caracteres usando a condição if e chegou nessa pate ai que vc falou para aa verificação do @ e eu ñ entendi EXPLICA AI
robsonsm
Seria bom vc ler sobre expressões regulares, pois é uma forma concisa e flexível de identificar palavras ou padrões de caracteres.
No exemplo que eu te passei, ele faz uma verificação se o e-mail é valido, não identificando apenas se tem “@”, mas se o mesmo segue o padrão da expressão passada, por exemplo, vc não pode ter um email dessa forma: nome@@empresa.com ou nome$%@.com, ou nome@empresa, etc.
Então, no exemplo ele faz essa verificação retornando um booleano caso o e-mail passado seja valido
Pattern p = Pattern.compile("^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$");
Matcher m = p.matcher(email);
if(m.matches()) {
// aqui seu e-mail foi validado corretamente
} else {
// aqui seu e-mail não foi validado corretamente
}
ViniGodoy
Rauel, por favor, evite as letras maiúsculas. Fica muito ruim de ler seus tópicos.
B
Burgheri
Sou novo, espero estar postando certo, Ola Colegas alguem pode me ajudar num problema de logica?
B
Burgheri
Tenho um trabalho de sudoku em java para fazer, ja fiz grande parte, mas onde devo verificar as linhas e colunas não consigo de maneira nenhuma.
B
Burgheri
é preciso colocar meu codigo aqui para ter uma resposta?, agradeço ajuda!
ViniGodoy
Se você ainda não o fez, crie um tópico só para você, ao invés de postar no tópico dos outros. E, sim, colocar os trechos relevantes de código ajuda muito.
B
Burgheri
Achei que poderia postar aqui porque era mesmo problema, e assim não ficar repetido a pergunta no site