Java学习——85.素数问题
今天有个小朋友又问了我关于素数的问题,虽然之前已经做过类似的,但今天我把它加在用户界面上了。
素数:只能被1和它自身整除的数。
例:3是素数,因为它只能被1和3整除,不能被2整除。
4不是素数,因为4能被2整除。
此题目包括界面和算法两部分。
(1) 界面:本界面比较简单,只需要包括一个提示标签,一个作为输入数据的文本行,一个按钮,一个说明结果的文本行。
点击按钮后,在说明结果的文本行中给出是否为素数。
(2) 算法:即判断一个数是否为素数的算法。
思路:假设n为要判断的数,从2开始,看n除以2是否为0,如果为0,n不是素数。如果不为0,继续整除。因此要用循环。
其完整代码如下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class PrimeNumber extends JFrame implements ActionListener{
private JTextField number,daan;
private JButton b;
public PrimeNumber(){
super("素数问题");
this.setBounds(200, 200, 400, 200);
this.setVisible(true);
this.setLayout(new GridLayout(2,1));
JPanel p1=new JPanel();
p1.add(new JLabel("请输入一个整数"));
number=new JTextField(10);
p1.add(number);
b=new JButton("判断是素数吗?");
b.addActionListener(this);
p1.add(b);
this.getContentPane().add(p1);
daan=new JTextField(10);
daan.setEditable(false);
this.getContentPane().add(daan);
}
public String prime_panduan(int n){//判断是否素数
int i;
String s="";
for(i=2;i<n;i++){
if(n%i==0)
{
s=n+"不是素数";
break;
}
}
if(i==n)
s=n+"是素数";
return s;
}
public void actionPerformed(ActionEvent ev){
String s=number.getText();
if(s.equals("")){
daan.setText("请输入整数");
daan.setForeground(Color.RED);
}
else{
int n=Integer.parseInt(number.getText());
String p=prime_panduan(n);
daan.setForeground(Color.GREEN);
daan.setText(p);
}
}
}
其运行结果如下:
如果没有输入数据,就单击按钮,会提示输入。
输入数据,如56,结果如下 :
输入数据,如17,结果如下: