Optellen in java applet

Status
Niet open voor verdere reacties.

jpbobbie

Gebruiker
Lid geworden
19 mrt 2008
Berichten
10
hoi,

ik ben een beginner wat betreft java..

nu moet ik een opdracht maken voor mn opleiding die luidt:

Kassa. maak een applet met een tekstvak. in het tekstvak tik je de prijs van een artikel . na elke prijs druk je op Enter en de applet toont dan de som van alle bedragen die je hebt ingetikt in een tweede tekstvak..

dit is wat ik nu in elkaar heb geflanst:

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Kassa extends Applet 
implements ActionListener {
	TextField invoervak, uitvoervak;

	
	public void init() {
		invoervak = new TextField( 20 );
		invoervak.addActionListener( this );
		
		
		uitvoervak = new TextField( 20 );
		
		
		add( invoervak );
		
		add( uitvoervak );
		
	}
	
	public void actionPerformed( ActionEvent e ) {
		if( e.getSource() == invoervak ) {
			String invoerstring;
			double getal, getal1, resultaat;
			
			invoerstring = invoervak.getText();
			getal = Double.parseDouble( invoerstring );
			
			invoerstring = uitvoervak.getText();
			getal1 = Double.parseDouble( invoerstring );
			
			resultaat = ggetal1 + getal;
			uitvoervak.setText( "" + resultaat );
		}
	}
}

het werkt alleen niet want ik weet niet hoe je met het laatst ingetypte getal verder rekent...
wie weet hoe dit moet?

groeten,

javabeginner..
 
Laatst bewerkt door een moderator:
Zet in het begin de double resultaat op 0.

Maak van:

resultaat = ggetal1 + getal;

dit:

resultaat = ggetal1 + getal + resultaat;

Volgens mij moet het dan lukken
 
Je wil dus standaard het bedrag uit het invoervak bij het bedrag uit het uitvoervak optellen?
Dan mag je er om gaan denken dat de string niet "" is, want dan ga je exceptions krijgen

Daarnaast denk ik dat het verstandig is om een JButton of een keylistener te gebruiken om de optelling te triggeren. Want nu is het dat elke keer dat je maar _iets_ doet in het invoervak dat hij al de bewerking uitvoert. Dus als je 100 intypt zal hij 3 bewerkingen uitvoeren.
1: uitvoervak + 1
2: uitvoervak + 10
3: uitvoervak + 100

Want een actionlistener gaat niet alleen maar om enter.
Als je een JButton toevoegd kan je dus optellen zodra je op die knop drukt.
Als je een keylistener gebruikt, dan moet je nagaan of het de enter is die ingedrukt wordt en de source 'invoervak' is om vervolgens de bewerking uit te voeren.


Ik heb even wat dingen aangepast:

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Kassa extends Applet 
implements ActionListener {
	TextField invoervak, uitvoervak;
	private double getal = 0;
	private double getal1 = 0;
	private double resultaat = 0;

	
	public void init() {
		invoervak = new TextField( 20 );
		invoervak.addActionListener( this );
		
		uitvoervak = new TextField( 20 );
		add( invoervak );
		add( uitvoervak );
	}
	
	public void actionPerformed( ActionEvent e ) {
		if( e.getSource() == invoervak ) {
			String invoerstring;
						
			invoerstring = invoervak.getText();
			if(invoerstring != ""){
				getal = Double.parseDouble( invoerstring );
			}else {
				getal = 0;
			}
			invoerstring = uitvoervak.getText();
			if(invoerstring != ""){
				getal1 = Double.parseDouble( invoerstring );
			}else {
				getal1 = 0;
			}
			resultaat = getal1 + getal;
			uitvoervak.setText( "" + resultaat );
		}
	}
}

Ik heb een controle toegevoegd. Want als er niets in een van de tekstvakken staat, oftewijl "" dan krijg je geen fouten meer.
Je zal nog moeten afvangen dat er geen letters meer in kunnen of dat die eruit gefiltert worden. Net als spaties en leestekens.

Daarnaast heb ik de variabelen getal, getal1 en resultaat "globaal" gemaakt. Dan worden ze niet elke keer opnieuw aangemaakt als je de "actionperformed" uitvoert wat veel tijd scheelt.
 
Laatst bewerkt:
Werkt niet

hoi,

bedankt voor je tips maar het werkt niet..

het zou kunnen dat het aan mijn computer ligt maar als ik een getal invoer en op enter druk gebeurdt er niks...

werkt deze applet bij jou wel? want dan ligt het dus aan mijn computer..

gr.

javabeginner
 
Ik heb hem niet getest.. heb het alleen iets ge-optimaliseert en wat foutcontrole erin gezet :)
je zou nog wat verder kunnen werken met de tips welke we nog gegeven hebben.
 
optellen

hoi,,

hij werkt nu wel alleen niet als ik getallen met een komma invoer.. weet iemand hoe je dit voor elkaar krijgt?

groeten,
javabeginner

ik heb dit nu:
Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Optellen extends Applet 
implements ActionListener {
	TextField invoervak, uitvoervak;
	private double getal = 0;
	private double getal1 = 0;
	private double resultaat = 0;


	
	public void init() {
		invoervak = new TextField( 20 );
		invoervak.addActionListener( this );
		
		
		uitvoervak = new TextField( 20 );
		uitvoervak.setText( "0" );
		add( invoervak );
		add( uitvoervak );
	
	}
	
	public void actionPerformed( ActionEvent e ) {
		if( e.getSource() == invoervak ) {
			String invoerstring;
						
			invoerstring = invoervak.getText();
			if(invoerstring != ""){
				getal = Double.parseDouble( invoerstring );
			}else {
				getal = 0;
			}
			invoerstring = uitvoervak.getText();
			if(invoerstring != ""){
				getal1 = Double.parseDouble( invoerstring );
			}else {
				getal1 = 0;
			}
			resultaat = getal1 + getal;
			uitvoervak.setText( "" + resultaat );
		}
	}
}
 
Laatst bewerkt door een moderator:
Als ik het goed uit mijn hoofd weet, dan wil een Double een . hebben ipv een ,
 
optellen

hoi,

het is gelukt.. ik deed ipv een punt een komma :confused:

bedankt voor de hulp!

groeten

javabeginner
 
Zit met dezelfde opdracht...
Mijn uitwerking ziet er wel anders uit en werkt ook nog niet helemaal; ik krijg de volgende foutmelding:
"opgave2_2.java": Error #: 553 : variable som might not have been initialized at line 36, column 21

Wat doe ik verkeerd??

Code:
package opgave2_2;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class opgave2_2 extends Applet
{
  TextField invoervak, uitvoervak;  Label invoerlabel,
  uitvoerlabel;

public void init()
  {
    invoerlabel = new Label("Prijs");

    invoervak = new TextField (10);
    invoervak.addActionListener(new invoervakHandler());

    uitvoerlabel = new Label("Totaalprijs");
    uitvoervak = new TextField (10);

    add(invoerlabel); add(invoervak); add(uitvoerlabel); add(uitvoervak);
  }

class invoervakHandler implements ActionListener
  {
    public void actionPerformed(ActionEvent e)
    {
      String invoerstring = invoervak.getText();
      double invoer = Double.parseDouble(invoerstring);

      double som = som + invoer;

      uitvoervak.setText("" + som);
      invoervak.setText("");
    }
  }
}
 
je zegt in die lijn

double som = som + invoer;

wanneer je die double aanmaakt, heeft hij nog geen waarde, en kun je er dus niet wat bij optellen. je zult het zo moeten doen:

double som = 0;
som = som + invoer;
 
Bedankt voor de reactie!

Ik krijg nu geen foutmeldingen meer, maar het werkt nog niet goed. Er wordt niet opgeteld; het getal wat steeds ingevoerd wordt, verschijnt in het uitvoervak en niet de som. Hoe kan ik dit veranderen?
 
ik denk dat je het precies zo overgenomen hebt als ik het er neer heb gezet? Zet dan "Double som = 0;" bovenaan de code, anders zet hij de hele tijd som op 0, en schiet het niks op :)
 
Optellen in java applet oplossing

hoi Tjenne, ik heb mn eigen applet ff opgezogt en deze werkt:


import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class **** extends Applet
implements ActionListener {
TextField invoervak, uitvoervak;
private double getal = 0;
private double getal1 = 0;
private double resultaat = 0;






public void init() {
invoervak = new TextField( 20 );
invoervak.addActionListener( this );


uitvoervak = new TextField( 20 );
uitvoervak.setText( "0" );
add( invoervak );
add( uitvoervak );

}

public void actionPerformed( ActionEvent e ) {
if( e.getSource() == invoervak ) {
String invoerstring;



invoerstring = invoervak.getText();
if(invoerstring != ""){
getal = Double.parseDouble( invoerstring );
}else {
getal = 0;
}
invoerstring = uitvoervak.getText();
if(invoerstring != ""){
getal1 = Double.parseDouble( invoerstring );
}else {
getal1 = 0;
}

if( e.getSource() == invoervak ) {
invoervak.setText( "");
}

resultaat = getal1 + getal;
uitvoervak.setText( "" + resultaat );
}
}
}





je moet alleen ff de '****' veranderen maar dat weet je neem ik aan wel..
mogt ie niet werken hoor ik het wel ;)
gr.

Jpbobbie
 
Hoe kan ik dit fixen?

Ik heb dezelfde opdracht gekregen en mijn script klopt bijna.
Er komt alleen een error wanneer er nog geen getal in de uitvoer staat.
Hoe kan ik dat fixen? (dus dat er vanaf het begin het getal 0 in de uitvoer staat)

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Kassa extends Applet
implements ActionListener {
	TextField invoer, uitvoer;

	public void init() {
		invoer = new TextField(20);
		uitvoer = new TextField(20);
		invoer.addActionListener( this );

		add(invoer);
		add(uitvoer);

	}

	public void actionPerformed( ActionEvent e ) {
		if( e.getSource() == invoer ) {
			String invoerstring;
			double getal1, getal2, resultaat ;

			invoerstring = invoer.getText();
			getal1 = Double.parseDouble( invoerstring );

			invoerstring = uitvoer.getText();
			getal2 = Double.parseDouble( invoerstring );

			resultaat = getal1 + getal2 ;
			uitvoer.setText( "" + resultaat );
			invoer.setText( "" );

		}
	}
}
 
Laat maar :D

Ik heb mijn probleempje al opgelost:

Code:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Kassa extends Applet
implements ActionListener {
	TextField invoer, uitvoer;

	public void init() {
		// maak het invoer en uitvoer vak
		invoer = new TextField(20);
		uitvoer = new TextField(20);
		invoer.addActionListener( this );
		
		// zet de beginwaarden van de vakken op 0
[COLOR="#FF0000"][B]		uitvoer.setText( "0" );
		invoer.setText( "0" );[/B][/COLOR]
		
		// zet de vakken in de applet
		add(invoer);
		add(uitvoer);

	}

	public void actionPerformed( ActionEvent e ) {
		if( e.getSource() == invoer ) {
			String invoerstring;
			double getal1, getal2, resultaat ;

			invoerstring = invoer.getText();
			getal1 = Double.parseDouble( invoerstring );

			invoerstring = uitvoer.getText();
			getal2 = Double.parseDouble( invoerstring );

			resultaat = getal1 + getal2 ;
			uitvoer.setText( "" + resultaat );
			invoer.setText( "" );

		}
	}
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan