Answer:
"Calories from Fat"
Complete Application
Here is the complete application, suitable for copying to an editor, saving to a file, and running.
import java.awt.* ;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
public class PercentFat extends JFrame implements ActionListener
{
JLabel heading = new JLabel("Percent of Calories from Fat");
JLabel fatLabel = new JLabel("Enter grams of fat: ");
JLabel calLabel = new JLabel("Enter total calories: ");
JLabel perLabel = new JLabel("Percent calories from fat: ");
JTextField inFat = new JTextField( 7 );
JTextField inCal = new JTextField( 7 );
JTextField outPer = new JTextField( 7 );
JButton doit = new JButton("Do It!");
double calories ; // input: total calories per serving
double fatGrams ; // input: grams of fat per serving
double percent; // result: percent of calories from fat
public PercentFat()
{
setTitle( "Calories from Fat" );
setLayout( new FlowLayout() );
add( heading );
add( fatLabel );
add( inFat );
add( calLabel );
add( inCal );
add( perLabel );
add( outPer );
outPer.setEditable( false );
add( doit );
doit.addActionListener( this );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
// The application
public void calcPercent( )
{
percent = ((fatGrams * 9) / calories) * 100 ;
}
public void actionPerformed( ActionEvent evt)
{
String userIn ;
userIn = inFat.getText() ;
fatGrams = Double.parseDouble( userIn ) ;
userIn = inCal.getText() ;
calories = Double.parseDouble( userIn ) ;
calcPercent() ;
// Convert percent to a nice string and write it to the output field
outPer.setText( new DecimalFormat("#0.0##").format( percent ) );
repaint();
}
public static void main ( String[] args )
{
PercentFat fatApp = new PercentFat() ;
fatApp.setSize( 280, 200 );
fatApp.setVisible( true );
}
}
The next to final line of the listener uses DecimalFormat to
make the output look better.
Look at Chapter 24B if you want to review this.
QUESTION 17:
If the user enters bogus data into the text fields, does this program crash?