2014-10-08 6 views
1

코드를 실행할 때 다음 오류가 발생합니다.오류 : 호환되지 않는 유형 : double을 JTextField로 변환 할 수 없습니다.

error: incompatible types: double cannot be converted to JTextField

JGrasp는 다음과 같은 문제를 지적하고 있습니다.

Programming6_4.Java:143: error: incompatible types: double cannot be converted to JTextField averageScoreTF = (test1 * wght1 + test2 * wght2 + test3 * wght3 + test4 * wght4); ^ 1 error

변환 할 수없는 항목으로 '+'을 (를) 신고하는 이유가 확실하지 않습니다. 도움을 주시면 감사하겠습니다.

import java.awt.*; 
import java.awt.event.*; 
import java.awt.FlowLayout; 
import javax.swing.*; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 

    public class Programming6_4 extends JFrame 
    { 
     //declares variables 
     private JLabel blankGrid1L, blankGrid2L, blankGrid3L, scoreL, weightL, testOneL, testTwoL, testThreeL, testFourL, averageScoreL; 

     private JTextField testOneTF, testTwoTF, testThreeTF, testFourTF, testOnewTF, testTwowTF, testThreewTF, testFourwTF, averageScoreTF; 

     private JButton calculateScoreB, exitB; 

     private CalculateButtonHandler cbHandler; 

     private ExitButtonHandler ebHandler; 

     //declare window size 
     private static final int WIDTH = 400; 
     private static final int HEIGHT = 200; 

     public Programming6_4() 
     { 
     //name labels 
     blankGrid1L = new JLabel ("", SwingConstants.CENTER); 
     blankGrid2L = new JLabel ("", SwingConstants.CENTER); 
     blankGrid3L = new JLabel ("", SwingConstants.CENTER); 
     scoreL = new JLabel ("Score", SwingConstants.CENTER); 
     weightL = new JLabel ("Weight", SwingConstants.CENTER); 
     testOneL = new JLabel ("Test One Score: ", SwingConstants.CENTER); 
     testTwoL = new JLabel ("Test Two Score: ", SwingConstants.CENTER); 
     testThreeL = new JLabel ("Test Three Score: ", SwingConstants.CENTER); 
     testFourL = new JLabel ("Test Four Score: ", SwingConstants.CENTER); 
     averageScoreL = new JLabel ("Average Weighted Test Score: ", SwingConstants.CENTER); 

     //create text fields 10 characters - Test Scores 
     testOneTF = new JTextField(10); 
     testTwoTF = new JTextField(10); 
     testThreeTF = new JTextField(10); 
     testFourTF = new JTextField(10); 

     //create text fields 10 charaters - Weights 
     testOnewTF = new JTextField(10); 
     testTwowTF = new JTextField(10); 
     testThreewTF = new JTextField(10); 
     testFourwTF = new JTextField(10); 
     averageScoreTF = new JTextField(10); 

     //create buttons and handler 
     calculateScoreB = new JButton ("Calculate"); 
     cbHandler = new CalculateButtonHandler(); 
     calculateScoreB.addActionListener(cbHandler); 

     exitB = new JButton ("Exit"); 
     ebHandler = new ExitButtonHandler(); 
     exitB.addActionListener(ebHandler); 

     //set grid size 
     Container pane = getContentPane(); 
     pane.setLayout(new GridLayout (7, 3)); 

     //add elements to grid spaced by line 
     pane.add (blankGrid1L); 
     pane.add (scoreL); 
     pane.add (weightL); 

     pane.add (testOneL); 
     pane.add (testOneTF); 
     pane.add (testOnewTF); 

     pane.add (testTwoL); 
     pane.add (testTwoTF); 
     pane.add (testTwowTF); 

     pane.add (testThreeL); 
     pane.add (testThreeTF); 
     pane.add (testThreewTF); 

     pane.add (testFourL); 
     pane.add (testFourTF); 
     pane.add (testFourwTF); 

     pane.add (averageScoreL); 
     pane.add (averageScoreTF); 
     pane.add (blankGrid2L); 

     pane.add (calculateScoreB); 
     pane.add (blankGrid3L); 
     pane.add (exitB); 

     //set window title, window, and display 
     setTitle ("Weighted Test Average Calculation"); 
     setSize (WIDTH, HEIGHT); 
     setVisible (true); 
     setDefaultCloseOperation (EXIT_ON_CLOSE); 
     //setLayout (new Programming6_4()); 
     } 
     //activates ActionListener 
     private class CalculateButtonHandler implements ActionListener 

     //Main calculation program 
     { 
     public void actionPerformed (ActionEvent e) //public static void main (String[] args) 
     { 
      //declare varibles in 
      double test1, test2, test3, test4, wght1, wght2, wght3, wght4, avgscore /*avg1, avg2, avg3, avg4*/; 

      //takes text entered by user and converts from string to decimal 
      test1 = Double.parseDouble(testOneTF.getText()); 
      wght1 = Double.parseDouble(testOnewTF.getText()); 
      test2 = Double.parseDouble(testTwoTF.getText()); 
      wght2 = Double.parseDouble(testTwowTF.getText()); 
      test3 = Double.parseDouble(testThreeTF.getText()); 
      wght3 = Double.parseDouble(testThreewTF.getText()); 
      test4 = Double.parseDouble(testFourTF.getText()); 
      wght4 = Double.parseDouble(testFourwTF.getText()); 

      //calculations needed to get weighted average 
      //avg1 = test1 * wght1; 
      //avg2 = test2 * wght2; 
      //avg3 = test3 * wght3; 
      //avg4 = test4 * wght4; 
      //avgscore = avg1 + avg2 + avg3 + avg4; 

      averageScoreTF = (test1 * wght1 + test2 * wght2 + test3 * wght3 + test4 * wght4); 
      averageScoreTF.setText("" + avgscore); 
     } 
     } 

     private class ExitButtonHandler implements ActionListener 
     { 
      public void actionPerformed (ActionEvent e) 
       { 
        System.exit(0); 
       } 
     } 

     public static void maine (String[]args) 
     { 
      Programming6_4 testObject = new Programming6_4(); 
     } 
    } 

답변

2

변경이 라인 :

averageScoreTF = (test1 * wght1 + test2 * wght2 + test3 * wght3 + test4 * wght4); 

에 :

avgscore = (test1 * wght1 + test2 * wght2 + test3 * wght3 + test4 * wght4); 

당신은 averageScoreTF 이후 averageScoreTF에 두 배를 할당 할 수는 숫자 유형 (오류 메시지가 말했다처럼)이 아니다.

+0

그건 그렇고, 그것을 찾으려고 몇 시간 봤어. 간단한 타이핑 오류, 나는 그것을 잡았 음에 틀림 없다. 나는 이것에 아주 새롭다, 6 주 새로운. 감사!!! –

0

분명히 혼란 스럽습니다. 이중은 숫자이고, jtextfield는 GUI 위젯입니다. 프레젠테이션을 위해 숫자를 텍스트 필드에 인쇄 할 가능성이 큽니다.

+0

예, 실수로 jtext 필드를 선언 된 double 위치에 넣습니다. –