Opa galera,antes de qualquer coisa não efetuei a pergunto no tópico que esta falando sobre números primos ali,pois o jeito que eu fiz foi diferente…então abri o meu mesmo…
Bem eh o seguinte eh bem simples…soh ler um numero e dizer se ele eh primo ou não é…porém ele sempre diz que o numero NÃO EH PRIMO
Gostaria de saber aonde esta o erro que eu não enxergo nesse code?
Agradeço desde já
[code]import javax.swing.JOptionPane;
public class NumerosPrimos {
/**
* @param args
*/
public static void main(String[] args) {
String numStrg = null;
int num = 0;
// Leitura do valor
numStrg = JOptionPane.showInputDialog("Digite o numero a ser pesquisado");
// Conversao de Str para Integer
num = Integer.parseInt(numStrg);
//Flag
boolean Flag = false;
//Laco de Repeticao
while(num != 0){
for(int x=2; x<(num-1); x++ ){
if(num % x == 0 ){
Flag = true;
}
}
if(Flag = false){
JOptionPane.showMessageDialog(null,"O numero é primo");
}
else{
JOptionPane.showMessageDialog(null,"O numero nao é primo");
}
numStrg = JOptionPane.showInputDialog ("Digite o numero a ser pesquisado");
num = Integer.parseInt(numStrg);
}
}
Você basicamente não está fazendo uma comparação lógica com este operador ‘=’, mas sim uma atribuição. Para corrigir isto, você deve usar dois iguais ‘==’ consecutivos que corresponde a um operador lógico de comparação.
[quote=wln1987]Dica: quando tiver usando boolean num coloca comparação… taca ele direto na condição, blz? Fica mais legível e menos suscetível a erros.
Abracos![/quote]
[quote=GiancarloBraga]Isso aí mesmo.
O erro está aqui:
if(Flag = false){
Você basicamente não está fazendo uma comparação lógica com este operador ‘=’, mas sim uma atribuição. Para corrigir isto, você deve usar dois iguais ‘==’ consecutivos que corresponde a um operador lógico de comparação.
Abraço. [/quote]
Agradeço a vocês então pela ajuda…sabe como q eh neh…novo em java acustumado com o pascal eu nem vi akilo la…rs
ahh wln…mas akilo que voce disse pra usar ele direto na condição…como ficaria…poderia me mostrar ? que eu num entendi mto bem com que voce quis dizer em usa-lo direto na condição…
Você basicamente está inserindo só a expressão booleana.
Nem precisa comparar nada! Se for verdadeiro vai no if e se for falso vai no else! Nem precisa comparar nesse caso pois você JÁ ESTÁ fornecendo um dado booleano.
Outra dica, é que por convenção, use nomes de variável começando com letra minúscula.
ahh uma ultima dúvida…testei o código sem o Flag = false que se encontra no final do loop logo após ele solicitar novamente o número ao usuario
[code] numStrg = JOptionPane.showInputDialog (“Digite o numero a ser pesquisado”);
num = Integer.parseInt(numStrg);
Flag = false;[/code]
por que tive que adicionar esse Flag = false para que o programa mostrasse corretamente na segunda vez se o número era Primo ou não…pq tipo eu tentei sem adicionar isso ele dava que todos não eram primos…pq isso ?
Porque você está dentro do laço while e a cada iteração a variável Flags continua com o valor da iteração anterior, não sendo inicializada novamente pois a declaração da variável Flags veio antes do loop while. O que acontece é que acabará havendo uma distorção do resultado em conseqüência disso.
Tente inicializar a variável Flags dentro do loop while e antes do for…
[quote=GiancarloBraga]Porque você está dentro do laço while e a cada iteração a variável Flags continua com o valor da iteração anterior, não sendo inicializada novamente pois a declaração da variável Flags veio antes do loop while. O que acontece é que acabará havendo uma distorção do resultado em conseqüência disso.
Tente inicializar a variável Flags dentro do loop while e antes do for…[/quote]
Fiz oque voces falaram e deu tudo certinho então…veja se esta 100% o código!Ahh brigadão pelas dicas viu!
[code]import javax.swing.JOptionPane;
public class NumerosPrimos {
/**
* @param args
*/
public static void main(String[] args) {
String numStrg = null;
int num = 0;
// Leitura do valor
numStrg = JOptionPane.showInputDialog("Digite o numero a ser pesquisado");
// Conversao de Str para Integer
num = Integer.parseInt(numStrg);
//Flag
boolean flag;
//Laco de Repeticao
while(num != 0){
flag = false;
for(int x=2; x<(num-1); x++ ){
if((num % x) == 0 ){
flag = true;
}
}
if(flag){ //condicional True = Nao Eh Primo // False = Eh
JOptionPane.showMessageDialog(null,"O numero nao é primo");
}
else{
JOptionPane.showMessageDialog(null,"O numero é primo");
}
numStrg = JOptionPane.showInputDialog ("Digite o numero a ser pesquisado");
num = Integer.parseInt(numStrg);
}
}