2012-03-05 5 views
0

내 프로그램은 입력 된 숫자의 제곱근을 계산하는 GUI를 만드는 것으로 가정합니다. 이 코드가 컴파일되지 않는 이유를 알 수 없습니다.Java - 프로그램이 getText (double)을 컴파일하지 못합니다/double

심볼 기호를 찾을 수 없습니다 : : 방법 (더블) gettext에이

내가 잘못하고있는 중이 야 내가 다음과 같은 오류 메시지가 계속? 당신이 문자열을 사용합니다()의 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 버전 이상일 수 있습니다. 하나의 JDK에는 NumberField.java가 있습니다. Secons JDK에 NumberField.java가 없습니다. – Ilya

+0

프로젝트를 새로 고칩니다. 해당 구문을 사용하는 클래스에는 메소드가 없습니다. 나는 당신의 IDE가 깨끗하지 않은 것을 말하는 것이라고 생각한다. – kosa

+0

일반적인 컨벤션에 따라'camelCase'에 변수 이름을 지정할 수 있다면 정말 도움이 될 것입니다. 또한 * 오류 메시지가 표시되는 곳을 말하십시오. 'getText (double) '에 대한 호출을 볼 수 없습니다 ... –

답변

4

유일한 컴파일 오류가 AnswerField.setText() 줄을이었다.

double을 문자열로 올바르게 변환하기위한 NumberFormat 클래스를 살펴보십시오. 더 간단한 옵션은 Double 객체를 사용하는 것이며 (double 데이터 유형, 대문자주의), toString() 메서드를 사용하는 것입니다. 다운 - 앤 - 더러운 방법은 그것을 자동 변환하기 때문에 ("+ 답)로 작성하는 것입니다.

+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

이 하나를 컴파일합니다. 여기에 당신이 간다 :

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); 

     } 
    }