/* ニュートン法による平方根の計算 */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Sqrt extends JFrame implements ActionListener { JButton bt1,bt2; JTextField tf1,tf2; public Sqrt(){ Container cp =getContentPane(); cp.setLayout(null); JLabel lb1 = new JLabel("x = "); JLabel lb2 = new JLabel("sqrt(x) = "); lb1.setBounds(5,5,60,25); lb2.setBounds(5,40,60,25); cp.add(lb1); cp.add(lb2); tf1 = new JTextField(80); tf2 = new JTextField(80); tf1.setBounds(65,5,220,25); tf2.setBounds(65,40,220,25); cp.add(tf1); cp.add(tf2); bt1 = new JButton("計 算"); bt2 = new JButton("終 了"); bt1.setBounds(70,80,80,25); bt2.setBounds(160,80,80,25); bt1.addActionListener(this); bt2.addActionListener(this); cp.add(bt1); cp.add(bt2); } public static void main(String argv[]){ Sqrt fr = new Sqrt(); fr.setSize(300,150); fr.setVisible(true); } public void actionPerformed(ActionEvent event) { if(event.getSource()==bt1){ double x = Double.valueOf(tf1.getText()).doubleValue(); if(x<0){ tf2.setText("計算不能!"); } if(x==0.0){ tf2.setText("0.0"); } if(x>0){ tf2.setText(Double.toString(sqrt_0(x))); } } if(event.getSource()==bt2){ dispose(); System.exit(0); } } public double sqrt_0 (double xx){ double eps = 1.0e-15; double x0; double x1=1.0; do{ x0 = x1; x1 =(x0+xx/x0)*0.50; }while(Math.abs(x1-x0)>eps); return x1; } }