zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

"Calories from Fat"

Vollständige Applikation

Hier ist die vollständige Applikation, geeignet um sie in einen Editor zu kopieren, in einer Datei zu speichern und auszuführen.

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: Gesamtkalorien pro Packung
  double fatGrams;  // Input: Gramm Fett pro Packung
  double percent;   // Ergebnis in Prozent

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

  // die Applikation
  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() ;

    // die Prozente in einen hübschen String konvertieren und im Ergebnisfeld ausgeben
    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 );
  }
}

Die vorletzte Zeile des Listeners verwendet DecimalFormat, damit die Ausgabe besser aussieht.

FRAGE 17:

Wenn der Anwender falsche Daten in die Textfelder eingibt, wird es zu einer Fehlermeldung kommen?