2012-03-05 26 views
0

私のプログラムは、入力された番号の平方根を計算すると仮定します。なぜこのコードがコンパイルされないのかわかりません。私は、次のエラーメッセージを取得しておく:メソッドのgetText(ダブル)Javaプログラムはコンパイル/メソッドgetText(double)

私が間違って何をやっている:

は、シンボル シンボルを見つけることができませんか?あなたはそれが文字列を取得()のsetTextのAPIリファレンスを見れば、あなたはそれをダブルをパスしようとしている - 私が得た

import java.awt.event.ActionEvent; //Next group of lines import various Java classes 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JCheckBox; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import java.awt.GridLayout; 
import java.text.*; 

public class SquareRoot extends JFrame 
{ 
    public static void main(String[] args) { 
     //Creates Window 
     JFrame frame = new JFrame(); 
     frame.setSize(450, 300); 
     frame.setTitle("Find the Square Root"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JLabel Numberlbl = new JLabel("Enter a number:"); 
     final JTextField NumberField = new JTextField(10); 
     NumberField.setText(""); 

     JLabel Answerlbl = new JLabel("Square Root of your number is:"); 
     final JTextField AnswerField = new JTextField(10); 
     AnswerField.setText(""); 

     JLabel ButtonLabel = new JLabel("Calculate Square Root"); 
     JButton button = new JButton("√"); 

     JPanel panel = new JPanel(); 
     panel.setLayout(new GridLayout(3,2)); 
     panel.add(Numberlbl); 
     panel.add(NumberField); 
     panel.add(ButtonLabel); 
     panel.add(button); 
     panel.add(Answerlbl); 
     panel.add(AnswerField); 
     frame.add(panel); 

     class CalculateListener implements ActionListener { 

      public void actionPerformed(ActionEvent event) { 

       double NumberX = Double.parseDouble(NumberField.getText()); 
       double Answer = Math.sqrt(NumberX); 
       AnswerField.setText(Answer); 

      } 
     } 

     ActionListener listener = new CalculateListener(); 
     button.addActionListener(listener); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

     } 
    } 
+0

IDEが間違ったことについてanithingを言っていないのに "cann't symbolを見つける"というエラーが出る場合は、コンピュータに1つ以上のJDKバージョンがあるかもしれません。 1つのJDKにはNumberField.javaがあります。 Secons JDKにはNumberField.javaがありません – Ilya

+0

プロジェクトを更新します。その構文でクラスにメソッドがありません。私はあなたのIDEは何かクリーンではないと思う。 – kosa

+0

通常の慣習に従って 'camelCase'に変数名を付けることができれば、本当に助けになるでしょう。また、*エラーメッセージが表示されています。 'getText(double)'の呼び出しを見ることができません... –

答えて

4

のみコンパイルエラーはAnswerField.setText()ラインのためでした。

ダブルを文字列に正しく変換するためのNumberFormatクラスを見てください。より単純なオプションは、Doubleオブジェクト(doubleデータ型ではなく、大文字を使用する)を使用し、そのtoString()メソッドを使用することです。ダウンアンドダーティーな方法は、それをあなたのために自動変換するので、それを "" + Answerとして書くことです。

+0

このアプローチでは汚いのは何ですか? –

+0

明示的な変換ではなく暗黙的な変換のみに依存し、意図したとおりに動作するとは限りません。たとえば、カンマが小数点区切りのヨーロッパ本土では、3.14が3,14と正しく表示されますか?私は完全にtoString()がその権利を得ることさえ確実ではない。 – JTeagle

+0

'd = 3.14; "+ d"は3.14を出力し、 '' "+ d.toString()' 'と' String.valueOf(d) 'を出力します。 –

1

setText(String text)メソッドがStringパラメータを必要とし、それにdoubleを与えているため、コードはコンパイルされません。

は使用し、あなたのコードを動作させるには:

AnswerField.setText(String.valueOf(Answer)); 
1
final Double answer = Math.sqrt(NumberX); 
AnswerField.setText(answer.toString()); 
0

この1つはコンパイルされます。

import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class SquareRoot extends JFrame 
{ 
    public static void main(String[] args) { 
     //Creates Window 
     JFrame frame = new JFrame(); 
     frame.setSize(450, 300); 
     frame.setTitle("Find the Square Root"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JLabel numberlbl = new JLabel("Enter a number:"); 
     final JTextField numberField = new JTextField(10); 
     numberField.setText(""); 

     JLabel answerlbl = new JLabel("Square Root of your number is:"); 
     final JTextField answerField = new JTextField(10); 
     answerField.setText(""); 

     JLabel buttonLabel = new JLabel("Calculate Square Root"); 
     JButton button = new JButton("√"); 

     JPanel panel = new JPanel(); 
     panel.setLayout(new GridLayout(3,2)); 
     panel.add(numberlbl); 
     panel.add(numberField); 
     panel.add(buttonLabel); 
     panel.add(button); 
     panel.add(answerlbl); 
     panel.add(answerField); 
     frame.add(panel); 

     class CalculateListener implements ActionListener { 

      public void actionPerformed(ActionEvent event) { 

       double numberX = Double.parseDouble(numberField.getText()); 
       double answer = Math.sqrt(numberX); 
       answerField.setText(""+answer); 

      } 
     } 

     ActionListener listener = new CalculateListener(); 
     button.addActionListener(listener); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

     } 
    }