Hoofdstuk 6, opdracht 1
Opdracht
Deze opdracht vereiste een aantal tekstvelden (wij hebben gekozen voor drie) en een knop. Nadat er op de knop is gedrukt, moet het grootste en het kleinste van de ingevoerde getallen op het scherm worden weergegeven. Wij hebben gekozen om hier twee aparte functies voor te schrijven: bepaalGrootste( ); en bepaalKleinste( );
Deze functies verwachten een array (verzameling) van cijfers. Het voordeel hiervan is dat de applicatie uitgebreid kan worden, zonder dat er kennis nodig is van de exacte werking van deze functies. Dit heeft veel weg van het OOP (object geörienteerd programmeren) principe.
Applet
Code
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Appletje extends Applet implements ActionListener {
// Defineer tekstveld & knop
TextField invoerVak1, invoerVak2, invoerVak3;
Button berekenKnop;
// Defineer globale variabelen
Boolean gevonden;
double grootste;
double kleinste;
public void init() {
// Initialiseer textvelden & knop
invoerVak1 = new TextField( 5 );
invoerVak2 = new TextField( 5 );
invoerVak3 = new TextField( 5 );
berekenKnop = new Button( "Bereken" );
berekenKnop.addActionListener( this );
// Voeg textveld toe aan GUI
add( invoerVak1 );
add( invoerVak2 );
add( invoerVak3 );
add( berekenKnop );
}
public void paint( Graphics g ) {
if ( this.gevonden ) {
g.drawString("Grootste is: " + this.grootste, 50, 60 );
g.drawString("Kleinste is: " + this.kleinste, 50, 80 );
}
}
public void actionPerformed( ActionEvent e ) {
// Is er op de 'Bereken'-knop gedrukt?
if ( e.getSource( ) == berekenKnop ) {
// Haal de waardes op
String waardeVak1 = invoerVak1.getText( );
String waardeVak2 = invoerVak2.getText( );
String waardeVak3 = invoerVak3.getText( );
// Maak er doubles van, gooi ze in array
double getallen[] = {
Double.parseDouble( waardeVak1 ),
Double.parseDouble( waardeVak2 ),
Double.parseDouble( waardeVak3 )
};
// Roep de 'echte' functies aan
this.grootste = this.bepaalGrootste( getallen );
this.kleinste = this.bepaalKleinste( getallen );
// Geef aan dat er resultaten gevonden zijn
this.gevonden = true;
// Teken de output opnieuw op het scherm
repaint();
}
}
// Functie om grootste waarde uit array te bepalen
private double bepaalGrootste( double[] getallen ) {
// Defineer een variabele met waarde '0'
double getal = 0;
// Loop door de array heen
for( int i = 0; i < getallen.length; i++ ) {
// Als dit getal groter is
if ( getallen[ i ] > getal ) {
// Defineer het als grootste
getal = getallen[ i ];
}
}
// Geef het gevonden getal terug
return getal;
}
// Functie om kleinste waarde uit array te bepalen
private double bepaalKleinste( double[] getallen ) {
// Variabele met eerste array-waarde
double getal = getallen[0];
// Loop door de array heen
for( int i = 0; i < getallen.length; i++ ) {
// Als dit getal kleiner is
if ( getallen[ i ] < getal ) {
// Defineer het als kleinste
getal = getallen[ i ];
}
}
// Geef het gevonden getal terug
return getal;
}
} Screenshot
