Qual o erro?

5 respostas
M
eu to fazendo um programa q diga se um número digitado pelo usuário é ou não primo. eu fiz um método e quero chamar esse metodo pro programa principal, esse codigo é o do método:
public class metodoPrimo {
	String a,b;
	
	public String primo(int num){
	a = " É primo ";
                b = "Não é primo";
			
	if ((num%2 != 0) && (num%3 != 0)) 
			
	     return a;
			
				
               else	
	     return b;
			
			}}
Ai o programa principal é:
import javax.swing.*;

public class cap6_626 {
	public static void main(String[] args) {
		
		int num;
		String x,y;
	
	metodoPrimo pri = new metodoPrimo();
	
	x = JOptionPane.showInputDialog(" Digite um número ");
	num = Integer.parseInt(x);
	
	y =  pri.primo(num);
	
	JOptionPane.showMessageDialog(null, y);
	
	System.exit(0);
	
	}}

a variavel y eu coloquei so pra ela receber o a ou o b do outro programa, eu posso fazer isso?
quando eu executo esse programa, não é imprimido nada, oq eu fiz de errado?

pra quem tem o livro do deitel 4 ediçao: pag 312 questao 6.26

abraço

5 Respostas

J

tente isso:

public class metodoPrimo { 
   String a = "É primo";
   String b = "Não primo"; 
    
   public String primo(int num){ 
          
  if ((num%2 == 0) && (num%3 == 0)) 
          
        return a; 
          
             
               else    
        return b; 
          
         }}

outra coisa, esse metodo nao verifica se o numero eh primo, vc sabe neh… e modifiquei a condicao do if pra uma que acho que esta mais correta.

espero ter ajudado

M

mas tipo, se eu deixar do meu jeito, ta errado? é pq o método tem q dizer se o número é primo ou nao.

abraço

T

Bom, pelo que entendi do seu código, vc criou uma classe métodoPrimo, e dentro dela colocou uma função primo, que retorna uma String.

Como vc criou uma classe, ela deve ter um construtor dentro dela, normalmente um padrão e talvez um que receba argumentos, caso vc deseje.

Como você dentro dessa classe tem duas variáveis (String a, b), você pode fazer a inicialização delas no construtor:

public class metodoPrimo 
{
      String a, b;

      public metodoPrimo()
      {
            a = " É primo "; 
            b = "Não é primo";
      }

      public String primo (int num)
      {
          if ((num%2 != 0) && (num%3 != 0)) 
                return a; 
          else    
                return b;
      }

}

O construtor padrão é necessário, já que no código principal vc faz a chamada:

metodoPrimo pri = new metodoPrimo();

Não estou muito certo desse método que vc utilizou pra calcular se o número é primo ou não… vc tem certeza que isso retorna realmente se o numero é primo?? Bom…
mas ao invés de vc criar uma classe, vc poderia simplesmente ter colocado esse método junto do código do seu programa principal… o que economizaria memória…

import javax.swing.*; 

public class cap6_626 
{ 
   public static void main(String[] args) 
  { 
      int num; 
      String x,y; 
    
 
         x = JOptionPane.showInputDialog(" Digite um número "); 
   num = Integer.parseInt(x); 
    
   y =  primo(num); 
    
   JOptionPane.showMessageDialog(null, y); 
    
   System.exit(0); 
    
   }

   public String primo (int num)
   {
          if ((num%2 != 0) && (num%3 != 0)) 
                return a; 
          else    
                return b;
   }

}
J

“mascarado”:
mas tipo, se eu deixar do meu jeito, ta errado? é pq o método tem q dizer se o número é primo ou nao.

abraço

na verdade o seu codigo inicial testava se um numero nao é divisível por 2 nem por 3…
o meu testa se é divisível por seis, realmente, o seu estava mais perto de testar se um número é primo ou não… :oops:

mas mesmo assim, esta muito distante de dar a resposta correta para todos os valores…os melhores matematicos do mundo todo querem encontrar esse algoritimo, que seria de extrema importancia para a area de seguranca e criptografia, e ninguem conseguiu ate hoje, pra vc ter noção…

no mais, sugiro que use o codigo de thimarcal.

flw

S

aconselho a dica do thimarcal tb… mais a melhor solução pra calcular se um número é primo até hj (não existe fórmula ainda como disse o javaAdicted) é tentando dividí-lo por todos os números anteriores a ele.

public String ehPrimo(int x) { int aux = x - 1; while (aux > 1) { if (x % aux == 0) return "O número " + x + " não é primo!"; aux--; } return "O número " + x + " é primo!"; }

PS: não testei, mas acho q tah certo sim… ^^

Criado 31 de maio de 2005
Ultima resposta 31 de mai. de 2005
Respostas 5
Participantes 4