} public static void main(String[] args) { new NumTest(); }
public void actionPerformed(ActionEvent e) { int m, n; m = Integer.parseInt(num1.getText()); n = Integer.parseInt(num2.getText()); if(btn1 == e.getSource()) { int k = m < n ? m : n; for(; k > 0; k--) if(m % k == 0 && n % k == 0) { result.setText("" + k); break; } } if(btn2 == e.getSource()) { int k = m > n ? m : n; for(; k <= m * n; k++) if(k % m == 0 && k % n == 0) { result.setText("" + k); break; } } } }
这个算法可能好点,把actionPerformed以后换成下面就可了. public void actionPerformed(ActionEvent e) { int m, n; m = Integer.parseInt(num1.getText()); n = Integer.parseInt(num2.getText()); if(btn1 == e.getSource()) { result.setText("" + f1(m,n)); } if(btn2 == e.getSource()) { result.setText("" + m * n / f1(m, n)); } }
public int f1(int m , int n) { return f2(m>n?m:n, m<=n?m:n); }
public int f2(int a, int b) { int c = a % b; if(c == 0) return b; else { return f2(b, c); } }
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class NumTest extends JFrame implements ActionListener
{
JButton btn1 = new JButton("最大公约数");
JButton btn2 = new JButton("最小公倍数");
JLabel label_1 = new JLabel("Num1");
JLabel label_2 = new JLabel("Num2");
JLabel label_3 = new JLabel("结果");
JTextField num1 = new JTextField(15);
JTextField num2 = new JTextField(15);
JTextField result = new JTextField(15);
public NumTest()
{
setSize(300, 200);
setVisible(true);
setLayout(null);
setResizable(false);
label_1.setBounds(10, 20, 40, 20);
num1.setBounds(70,20,100,20);
label_2.setBounds(10, 50, 40, 10);
num2.setBounds(70,50,100,20);
label_3.setBounds(10, 80, 40, 10);
result.setBounds(70,80,100,20);
result.setEditable(false);
btn1.setBounds(180, 20, 100, 20);
btn2.setBounds(180, 50, 100, 20);
add(num1);
add(num2);
add(result);
add(btn1);
add(btn2);
add(label_1);
add(label_2);
add(label_3);
btn1.addActionListener(this);
btn2.addActionListener(this);
}
public static void main(String[] args)
{
new NumTest();
}
public void actionPerformed(ActionEvent e)
{
int m, n;
m = Integer.parseInt(num1.getText());
n = Integer.parseInt(num2.getText());
if(btn1 == e.getSource())
{
int k = m < n ? m : n;
for(; k > 0; k--)
if(m % k == 0 && n % k == 0)
{
result.setText("" + k);
break;
}
}
if(btn2 == e.getSource())
{
int k = m > n ? m : n;
for(; k <= m * n; k++)
if(k % m == 0 && k % n == 0)
{
result.setText("" + k);
break;
}
}
}
}
public void actionPerformed(ActionEvent e)
{
int m, n;
m = Integer.parseInt(num1.getText());
n = Integer.parseInt(num2.getText());
if(btn1 == e.getSource())
{
result.setText("" + f1(m,n));
}
if(btn2 == e.getSource())
{
result.setText("" + m * n / f1(m, n));
}
}
public int f1(int m , int n)
{
return f2(m>n?m:n, m<=n?m:n);
}
public int f2(int a, int b)
{
int c = a % b;
if(c == 0)
return b;
else
{
return f2(b, c);
}
}