平方根(Math.sqrtを使わない)

平方根(Math.sqrtを使わない)

平方根(Math.sqrtを使わない)

/**
 * 
 */
package net.hinekure.test;

import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.Dimension;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JTextField;

/**
 * @author ****
 *
 */
public class SampleProj_20120617 extends JFrame {

	private static final long serialVersionUID = 1L;
	private JPanel jContentPane = null;
	private JLabel jLabel_1 = null;
	private JLabel jLabel_2 = null;
	private JLabel jLabel_3 = null;
	private JButton jButton_1 = null;
	private JTextField jTextField_1 = null;
	private JTextField jTextField_2 = null;
	private JTextField jTextField_3 = null;

	/**
	 * This method initializes jButton_1	
	 * 	
	 * @return javax.swing.JButton	
	 */
	private JButton getJButton_1() {
		if (jButton_1 == null) {
			jButton_1 = new JButton();
			jButton_1.setBounds(new Rectangle(226, 119, 191, 90));
			jButton_1.setText("計算開始");
			jButton_1.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					double a = Double.parseDouble(jTextField_1.getText());
					double epslion = Double.parseDouble(jTextField_2.getText());
					keisan_sqrt(a, epslion);
				}
			});
		}
		return jButton_1;
	}

	/**
	 * This method initializes jTextField_1	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField_1() {
		if (jTextField_1 == null) {
			jTextField_1 = new JTextField();
			jTextField_1.setBounds(new Rectangle(14, 57, 192, 48));
		}
		return jTextField_1;
	}

	/**
	 * This method initializes jTextField_2	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField_2() {
		if (jTextField_2 == null) {
			jTextField_2 = new JTextField();
			jTextField_2.setBounds(new Rectangle(225, 59, 193, 46));
		}
		return jTextField_2;
	}

	/**
	 * This method initializes jTextField_3	
	 * 	
	 * @return javax.swing.JTextField	
	 */
	private JTextField getJTextField_3() {
		if (jTextField_3 == null) {
			jTextField_3 = new JTextField();
			jTextField_3.setBounds(new Rectangle(14, 165, 188, 46));
		}
		return jTextField_3;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				SampleProj_20120617 thisClass = new SampleProj_20120617();
				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				thisClass.setVisible(true);
			}
		});
	}

	/**
	 * This is the default constructor
	 */
	public SampleProj_20120617() {
		super();
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		this.setSize(460, 282);
		this.setContentPane(getJContentPane());
		this.setTitle("平方根の計算");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jLabel_3 = new JLabel();
			jLabel_3.setBounds(new Rectangle(16, 120, 189, 27));
			jLabel_3.setText("score root of a = ");
			jLabel_2 = new JLabel();
			jLabel_2.setBounds(new Rectangle(225, 16, 195, 29));
			jLabel_2.setText("epslion = ");
			jLabel_1 = new JLabel();
			jLabel_1.setBounds(new Rectangle(15, 16, 192, 29));
			jLabel_1.setText("a = ");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(jLabel_1, null);
			jContentPane.add(jLabel_2, null);
			jContentPane.add(jLabel_3, null);
			jContentPane.add(getJButton_1(), null);
			jContentPane.add(getJTextField_1(), null);
			jContentPane.add(getJTextField_2(), null);
			jContentPane.add(getJTextField_3(), null);
		}
		return jContentPane;
	}
	public double keisan_sqrt(double aa, double eepsilon){
		boolean flg = false;
		double x0 = aa;
		double x1 = (x0+(aa/x0))/2;
		double error = Math.abs((x1-x0)/x0);
		if (aa <= 0){
			if (aa < 0){
				flg = true;
			}else{
				jTextField_3.setText(Double.toString(aa));
			}
		}else{
			while (error >= eepsilon){
				x0 = x1;
				if (Math.abs(x0) <= 0){
					flg = true;
					break;
				}
				x1 = (x0+(aa/x0))/2;
				error = Math.abs((x1-x0)/0);
			}
		}
		if (flg){
			jTextField_3.setText("平方根がありません");
		}else{
			jTextField_3.setText(Double.toString(x0));
		}
		return x0;
	}
}  //  @jve:decl-index=0:visual-constraint="10,10"