Estava praticando GUI e peguei um exercício que pedia para criar um applet contendo dois JTextField, um para receber um número e outro para exibir se o número digitado é primo ou não. Meu código ficou assim:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class GUI extends JApplet implements ActionListener {
boolean primo;
double input, i;
JLabel n1, resultado;
JTextField num1, res;
public void init()
{
Container container=getContentPane();
container.setLayout(new FlowLayout());
n1=new JLabel("Número avaliado");
num1=new JTextField(15);
num1.addActionListener(this);
container.add(n1);
container.add(num1);
resultado=new JLabel("O número é primo?");
res=new JTextField(5);
res.addActionListener(this);
container.add(resultado);
container.add(res);
}
public void actionPerformed(ActionEvent actionEvent) {
input=Double.parseDouble(actionEvent.getActionCommand());
if(input==2 || input==3)
primo=true;
else
{
for(i=2;i<=(input/2) ; i++)
{
if((input%i)!=0)
primo=true;
else
primo=false;
break;
}
}
if(primo==true)
res.setText("Sim");
else
res.setText("Não");
}
}
Aparentemente, minha lógica deveria funcionar, já que estou verificando a divisibilidade do número por todos os valores abaixo de input/2(sei que, matematicamente falando, seria melhor que eu verificasse a divisibilidade até sqrt(input), mas ao usar o método sqrt(), recebo uma mensagem de erro dizendo “the method sqrt(double) is not defined in this GUI”, e ele persiste mesmo depois de incluir import java.lang.Math.* .Alguém sabe o porquê desse erro?).
O código funcionou para vários números, mas ao digitar 123, o programa diz que este número é primo, mas ele é divisível por 3.
Alguém sabe me dizer aonde está o erro no meu código?