2013-08-12 122 views
1

我似乎无法添加文本字段并将其结果显示在显示卡路里文本字段中。无法在其他文本字段中添加并显示文本字段值

import java.applet.Applet; 
import java.awt.Button; 
import java.awt.Label; 
import java.awt.TextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JLabel; 


public class caloriesBurnerApplet extends Applet implements ActionListener { 

    /**** 
    // 
    //Running 6 mph : 10 METS 
    //Basketball : 8 METS 
    //Sleeping: 1 METS 
    //formula for the number calories burned per minute 
    //calories/minutes = 0.0175 * MET * Weight in kilogram 
    // 
    // 1 kg = 2.2 lbs ==> 1 lb = (1/2.2) kg 
    ****/ 

    Label lbWeight, lbRun, lbBsktBall, lbSleep, lbRunningCalories, lbBsktBallCalorioes, 
    lbSleepingCalories ; 

    Button caloriesCalcBtn ; 

    TextField txtWeight, txtRun, txtBsktBall, txtSleep, txtDspyRunCalr, 
    txtDspyBsktBallCalr, txtDspySleepCalr ; 

    int weight, minRun, minBsktBall, hourSleep; 
    float caloriesRun, caloriesBsktBall, caloriesSleep, caloriesTotal; 
    String weightString, minRunString, minBsktBallString, hourSleepString; 

    private static final long serialVersionUID = 1L; 

    public caloriesBurnerApplet() 
    { 
      lbWeight = new Label("Please enter your weight", JLabel.LEFT); 
      txtWeight = new TextField(15); 
      lbRun = new Label("How long do you run for 6 mph (in minutes)", JLabel.LEFT); 
      txtRun = new TextField(15); 
      lbBsktBall = new Label("How long do you play BasketBall (in minutes)"); 
      txtBsktBall = new TextField(15); 
      lbSleep = new Label("How many hours do you sleep"); 
      txtSleep = new TextField(15); 
      caloriesCalcBtn = new Button("Calculate calories"); 
      lbRunningCalories = new Label("By Running you burnt these calories: "); 
      txtDspyRunCalr = new TextField(15); 
      lbBsktBallCalorioes = new Label("By Playing BasketBall you burnt there calories: "); 
      txtDspyBsktBallCalr = new TextField(15); 
      lbSleepingCalories = new Label("By Sleeping you burnt these calories: "); 
      txtDspySleepCalr = new TextField(15); 

    } 

    public void init() 
    { 

    add(lbWeight); 
    add(txtWeight); 
    add(lbRun); 
    add(txtRun); 
    add(lbBsktBall); 
    add(txtBsktBall); 
    add(lbSleep); 
    add(txtSleep); 
    add(caloriesCalcBtn); 
    add(lbRunningCalories); 
    add(txtDspyRunCalr); 
    add(lbBsktBallCalorioes); 
    add(txtDspyBsktBallCalr); 
    add(lbSleepingCalories); 
    add(txtDspySleepCalr); 

    } 
    @Override 

    public void actionPerformed(ActionEvent e) { 

     //calories/minutes = 0.0175 * MET * Weight in kilogram 
     // , minRunString, minBsktBallString, hourSleepString; 

     //weight = Integer.parseInt(txtWeight.getText()); 

     //minRun = Double.parseDouble(txtRun.getText()); 
     //minBsktBall = Double.parseDouble(txtBsktBall.getText()); 
     //hourSleep = Double.parseDouble(txtSleep.getText()); 
      weight = Integer.parseInt(txtWeight.getText()); 
      minRun = Integer.parseInt(txtRun.getText()); 
      minBsktBall = Integer.parseInt(txtBsktBall.getText()); 
      hourSleep = Integer.parseInt(txtSleep.getText()); 
      caloriesRun = (float) (minRun * 0.0175 * 10 * ((weight) * (1/2))); 

     if (e.getSource() == caloriesCalcBtn) 
     { 

      // can't seems to display result in the caloriesRun textfield 
      txtDspyRunCalr.setText(String.valueOf(caloriesRun)); 
     } 

    } 


} 
+0

我想我忘了添加此部分: \t caloriesCalcBtn.addActionListener(本); – Abdul

+0

为什么要编写一个小程序?如果由于规格而到期。由老师,请参考[为什么CS老师应该停止教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)。 –

+0

嗨安德鲁汤普森,我只是阅读电子书,并尝试编写项目在每章的末尾(在应用程序和小程序)只为练习。它不是一个家庭作业,只是自我实践,但有一件事我错了是当我txtDspyRunCalr按钮来获得卡路里运行,我得到0.0的答案,无论输入值是minRun和体重。你知道我做错了什么吗?我完全失去了 – Abdul

回答

0

这个applet使用整数值,它应该使用float或double。解决这个问题。

变化:

int weight, minRun, minBsktBall, hourSleep; 

要:

double weight, minRun, minBsktBall, hourSleep; 

&的actionPerformed应沿的线条更:

weight = Double.parseDouble(txtWeight.getText()); 
minRun = Double.parseDouble(txtRun.getText()); 
minBsktBall = Double.parseDouble(txtBsktBall.getText()); 
hourSleep = Double.parseDouble(txtSleep.getText()); 
// That '1/2' is the real problem, it equates to '0' in integer logic! 
// caloriesRun = (float) (minRun * 0.0175 * 10 * ((weight) * (1/2))); 
caloriesRun = (float) (minRun * 0.0175 * 10d * ((weight) * (.5))); 
+0

非常感谢安德鲁汤普森,它的工作这是真棒,谢谢 – Abdul

相关问题