平方根(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"