2014-10-08 174 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周新的。謝謝!!! – 2014-10-08 04:38:01

0

你顯然很困惑 - double是數字,jtextfield是GUI小部件。 很可能您想將您的號碼打印到文本字段中進行演示。

+0

是的,我錯誤地把jtext字段放在我聲明的double的位置。 – 2014-10-08 04:39:26

相關問題