JAVA JDK tijd omrekenen

Status
Niet open voor verdere reacties.

BoTim

Nieuwe gebruiker
Lid geworden
26 mei 2010
Berichten
4
Hallo,

Wij willen met JAVA JDK programmeren.

De opdracht hierbij is dat we tijd moeten omrekenen in seconden, minuten, uren.
Als er dus seconden worden ingevuld, moet er komen te staan hoeveel minuten en uren dit zijn en andersom.

Is er iemand die ons op weg kan helpen of iemand die een tip heeft voor een goed tutorial?
Alvast bedankt!:)
 
Laatst bewerkt:
Dankje voor de tutorials!

We dachten zelf aan meerdere tekstvakken.
1 voor secondes, 1 voor minuten, 1 voor uren.
Het leek ons het handigst om het als volgt te doen:
Als er bijvoorbeeld bij het vakje secondes een getal wordt ingetypt,
en er wordt gedrukt op: knop 'start'
dan verschijnen in de vakjes 'uur' & 'minuten' de omgezette waardes.

mvg.
 
Beste Bo & Tim,

Ten eerste sorry dat ik vanmorgen geen stuk code erbij leverde ik had namelijk een beetje weinig tijd.

Hierbij alsnog een stuk code. Het is niet helemaal zoals jullie beschreven, maar ik denk dat jullie er een heel eind mee komen. Ik heb het niet heel netjes geordend zoals je ziet (De main methode die het frame aanmaakt zit in dezelfde klasse als het JPanel etc.) Ook gebruik ik dezelfde variabelen in rekenAantalMinutenOm / rekenAantalSecondenOm en rekenAantalUrenOm dus deze dingen zouden natuurlijk een stuk mooier kunnen. (+ vast nog heel wat extra dingen).

Uitleg bij de klasse:
Het is een JPanel met textvelden (waar je de waardes kan invullen) en knoppen zodat er een uitkomst verschijnt. Dit word gedaan door middel van een eventHandler in dit geval heb ik het opgenomen als een innerclass. (een private klasse in een klasse).
De methodes zijn standaard: Je geeft wat in je doet een berekening en je krijgt er wat uit. In dit geval heb ik een try / catch gebruikt omdat textFields (naar mijn weten) alleen strings accepteren als invoer en moeten die dus omgezet worden naar int's / doubles.
Code:
package oefenen;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TijdOmrekenen extends JPanel {   //Dit betekent dat het een paneel is. (extends JPanel)

   private JTextField seconden, minuten, uren;                                     //Declaratie van JTextFields (dit zijn textveldjes die standaard in de javax.swing package zitten).
   private JButton secondenButton, minutenButton, urenButton;         //Declaratie van   JButton       (dit zijn knoppen   die standaard in de javax.swing package zitten ).
   private JTextField result;                                                                    //TextField waar het resultaat in komt te staan.
    
   public TijdOmrekenen() {
       setLayout( new BoxLayout(this, BoxLayout.Y_AXIS)); //Zet de layout van het paneel op een BoxLayout (link 1).
       EventHandler eventHandler = new EventHandler();     //Maakt een nieuwe instantie van de klasse EventHandler (dit is in dit geval een private klasse).
       
       seconden = new JTextField();   //Hier maak je het daadwerkelijke textField aan (die je bovenaan gedeclareerd hebt.)
       minuten  = new JTextField();    // ..
       uren     = new JTextField();     // ..
       
       secondenButton = new JButton("Reken seconden om"); //Hier maak je de button aan met tussen de haakjes de tekst die op de button komt te staan. 
       minutenButton  = new JButton("Reken minuten om ");
       urenButton     = new JButton("Reken uren om    ");
       
       result = new JTextField("Hier komt uw antwoord.");
       result.setEditable( false );  //Hier zorg je ervoor dat de textField niet Editable is dus dat hij niet te wijzigen valt. 
       
       secondenButton.addActionListener( eventHandler );  //Hier voeg je de EventHandler (de klasse die alle handelingen afhandelt aan de betreffende componenten toe. In dit geval voeg je dus de klasse EventHandler toe aan de button (omdat dit een ActionListener is gebruik ik addActionListener(.. ) )  (zie link 2)
       minutenButton.addActionListener( eventHandler );
       urenButton.addActionListener( eventHandler );
       
       add(seconden); //Hier worden de componenten aan het paneel toegevoegd. (in dit geval dus dit paneel.) == this.add(seconden).
       add(secondenButton); 
       add(minuten);
       add(minutenButton);
       add(uren);
       add(urenButton);
       add(result);
   }
   
   public String rekenSecondenOm( String seconden ) { //Dit is de methode om seconden om te rekenen de andere methodes gaan eigenlijk op dezelfde manier.
       int aantalSeconden = 0;  //Je maakt een locale variabele aan (een variabele die alleen binnen de methode bestaat) en geeft hem de standaard waarde 0.
       try {  //Probeer.
	   aantalSeconden = Integer.parseInt( seconden );   //aantalSeconden dat een string is word hier omgezet in een Integer (getal). Hier moeten dus getallen in worden gevult.
       }catch(NumberFormatException n) {
	   return "Vul een echt getal in";  //Als er geen getal word ingevult, maar bijv. letters word dit aangeroepen (hij geeft dan namelijkeen NumberFormatException) hij valt die af door een string te returnen "Vul een echt getal in". Als de methode iets returned is hij klaar. en gaat hij uit de methode. (link 3)
       }
       //Dit word uitgevoerd als er niks gereturned is en er dus een getal is ingevult.
       double minuten = aantalSeconden/60.00;    // er word hier weer een lokale variabele gemaakt genaamd "minuten" en word gevult met het aantalSeconden / 60
       double uren    = aantalSeconden/3600.00; ..
       
       return "Uw ingevulde aantal " + aantalSeconden + " seconden staat gelijk aan: \n " +                     //Hier returned de methode een string met het antwoord. De methode is nu uitgevoerd.
       		"aantal minuten " + minuten + "\n aantal uren: " + uren;
   }
   
   public String rekenMinutenOm( String minuten ) {
       int aantalMinuten = 0;
       try {
	   aantalMinuten = Integer.parseInt( minuten );
       }catch(NumberFormatException n) {
	   return "Vul een echt getal in";
       }
       
       double seconden = aantalMinuten*60;
       double uren    = aantalMinuten/60;
       
       return "Uw ingevulde aantal " + aantalMinuten + " minuten staat gelijk aan: \n " +
       		"aantal seconden " + seconden + "\n aantal uren: " + uren;    
   }
   
   public String rekenUrenOm( String uren ) {
       int aantalUren = 0;
       try {
	   aantalUren = Integer.parseInt( uren );
       }catch(NumberFormatException n) {  
	   return "Vul een echt getal in";
       }
       
       double seconden = aantalUren*3600;
       double minuten = aantalUren*60;
       
       return "Uw ingevulde aantal " + aantalUren + " uren staat gelijk aan: \n " +
       		"aantal seconden " + seconden + "\n aantal minuten: " + minuten;
   }
    
   private class EventHandler implements ActionListener {    //De private klasse EventHandler die het Interface ActionListener implementeert. (link 4)
       public void actionPerformed(ActionEvent e) {    //Als er een actie word uitgevoerd (die is bijv. als je op een button klikt. (waar de klasse aan toegevoerd is (zie AddActionListener.. )
	   if(e.getSource() == secondenButton) {   //Als de actie word uitgevoerd op secondenButton.
	       result.setText( rekenSecondenOm( seconden.getText() ) );    //Zet in result de text die de methode rekenSecondenOm( parameter: De text die is ingetypt in seconden (dit is het JTextField) ) returned     LET OP! deze klasse kan bij seconden omdat het een private klasse is en seconden als private variabele van TijdOmrekenen gedeclareerd is
	   }
	   if(e.getSource() == minutenButton) {
	       result.setText( rekenMinutenOm( minuten.getText() ) ); //Hiervoor geldt hetzelfde
	   }
	   if(e.getSource() == urenButton ) {
	       result.setText( rekenUrenOm( uren.getText() ) ); //Hiervoor geldt hetzelfde.
	   }
       }
   }
   
   public static void main (String args[]) {   //Methode die word aangeroepen bij het starten van deze klasse.
       TijdOmrekenen to = new TijdOmrekenen();   //Er word een nieuwe instantie van de klasse TijdOmrekenen gemaakt.
       
       JFrame frame = new JFrame();  //Er word een nieuw JFrame aangemaakt. (link 5). 
       frame.setSize(  300, 400 );  //De grootte van het JFrame word gezet.
       frame.setContentPane( to );  //Tijdomrekenen word als ContentPane (het paneel dat men kan zien) van het JFrame gezet.
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //Dit zorgt ervoor dat het progr. word afgesloten als men op kruisje klikt.
       frame.pack();  //De componenten worden ingepakt. dit heeft met grootte etc te maken.
       frame.setVisible( true ); //Het frame word zichtbaar gemaakt.
       
       
   }
   link1:BoxLayout                            http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html
   link2:ActionListener                      http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html
   link3:NumberFormatException     http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NumberFormatException.html
   link4 Inner Class (Private class): http://java.sun.com/docs/books/tutorial/java/javaOO/innerclasses.html   (inner class is de officiele benaming voor een private class). 
   link5 JFrame:                               http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFrame.html      /    http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html
   extra link JPanel:                         http://java.sun.com/docs/books/tutorial/uiswing/components/panel.html     /  http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JPanel.html

}

:)
Happy Programming.

Kind regards,
NewbProgr.
 
Laatst bewerkt:
Beste NewbiProgrammer,

Hartelijk bedankt voor deze code. We hebben het even druk gehad, maar gaan er morgen mee aan de slag.
We hebben een boekje kunnen krijgen voor beginners, over JAVA. Na dat boekje gelezen te hebben is ons alles iets duidelijker.
Toch wil ik je vragen, kun je misschien nog wat extra toelichting geven bij deze code. Graag zo simpel mogelijk, want we zijn beginnende beginners zal ik maar zeggen.;)

Alvast heel vriendelijk bedankt.
Mochten we morgen nog vragen hebben dan hoort u het.
 
-

BoTim, ik denk dat jullie Java opdracht niet goed uitvoerbaar is aangezien je voor deze opdracht waarschijnlijk geen Java nodig bent, maar meer iets als Gamemaker denk ik.
Succes verrder nog ;)
 
...

package oefenen;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TijdOmrekenen extends JPanel { //Dit betekent dat het een paneel is. (extends JPanel)

private JTextField seconden, minuten, uren; //Declaratie van JTextFields (dit zijn textveldjes die standaard in de javax.swing package zitten).
private JButton secondenButton, minutenButton, urenButton; //Declaratie van JButton (dit zijn knoppen die standaard in de javax.swing package zitten ).
private JTextField result; //TextField waar het resultaat in komt te staan.

}

public TijdOmrekenen() {
setLayout( new BoxLayout(this, BoxLayout.Y_AXIS)); //Zet de layout van het paneel op een BoxLayout (link 1).
EventHandler eventHandler = new EventHandler(); //Maakt een nieuwe instantie van de klasse EventHandler (dit is in dit geval een private klasse).

seconden = new JTextField(); //Hier maak je het daadwerkelijke textField aan (die je bovenaan gedeclareerd hebt.)
minuten = new JTextField(); // ..
uren = new JTextField(); // ..

secondenButton = new JButton("Reken seconden om"); //Hier maak je de button aan met tussen de haakjes de tekst die op de button komt te staan.
minutenButton = new JButton("Reken minuten om ");
urenButton = new JButton("Reken uren om ");

result = new JTextField("Hier komt uw antwoord.");
result.setEditable( false ); //Hier zorg je ervoor dat de textField niet Editable is dus dat hij niet te wijzigen valt.

secondenButton.addActionListener( eventHandler ); //Hier voeg je de EventHandler (de klasse die alle handelingen afhandelt aan de betreffende componenten toe. In dit geval voeg je dus de klasse EventHandler toe aan de button (omdat dit een ActionListener is gebruik ik addActionListener(.. ) ) (zie link 2)
minutenButton.addActionListener( eventHandler );
urenButton.addActionListener( eventHandler );

add(seconden); //Hier worden de componenten aan het paneel toegevoegd. (in dit geval dus dit paneel.) == this.add(seconden).
add(secondenButton);
add(minuten);
add(minutenButton);
add(uren);
add(urenButton);
add(result);
}

public String rekenSecondenOm( String seconden ) { //Dit is de methode om seconden om te rekenen de andere methodes gaan eigenlijk op dezelfde manier.
int aantalSeconden = 0; //Je maakt een locale variabele aan (een variabele die alleen binnen de methode bestaat) en geeft hem de standaard waarde 0.
try { //Probeer.
aantalSeconden = Integer.parseInt( seconden ); //aantalSeconden dat een string is word hier omgezet in een Integer (getal). Hier moeten dus getallen in worden gevult.
}catch(NumberFormatException n) {
return "Vul een echt getal in"; //Als er geen getal word ingevult, maar bijv. letters word dit aangeroepen (hij geeft dan namelijkeen NumberFormatException) hij valt die af door een string te returnen "Vul een echt getal in". Als de methode iets returned is hij klaar. en gaat hij uit de methode. (link 3)
}
//Dit word uitgevoerd als er niks gereturned is en er dus een getal is ingevult.
double minuten = aantalSeconden/60.00; // er word hier weer een lokale variabele gemaakt genaamd "minuten" en word gevult met het aantalSeconden / 60
double uren = aantalSeconden/3600.00; ..

return "Uw ingevulde aantal " + aantalSeconden + " seconden staat gelijk aan: \n " + //Hier returned de methode een string met het antwoord. De methode is nu uitgevoerd.
"aantal minuten " + minuten + "\n aantal uren: " + uren;
}

public String rekenMinutenOm( String minuten ) {
int aantalMinuten = 0;
try {
aantalMinuten = Integer.parseInt( minuten );
}catch(NumberFormatException n) {
return "Vul een echt getal in";
}

double seconden = aantalMinuten*60;
double uren = aantalMinuten/60;

return "Uw ingevulde aantal " + aantalMinuten + " minuten staat gelijk aan: \n " +
"aantal seconden " + seconden + "\n aantal uren: " + uren;
}

public String rekenUrenOm( String uren ) {
int aantalUren = 0;
try {
aantalUren = Integer.parseInt( uren );
}catch(NumberFormatException n) {
return "Vul een echt getal in";
}

double seconden = aantalUren*3600;
double minuten = aantalUren*60;

return "Uw ingevulde aantal " + aantalUren + " uren staat gelijk aan: \n " +
"aantal seconden " + seconden + "\n aantal minuten: " + minuten;
}

private class EventHandler implements ActionListener { //De private klasse EventHandler die het Interface ActionListener implementeert. (link 4)
public void actionPerformed(ActionEvent e) { //Als er een actie word uitgevoerd (die is bijv. als je op een button klikt. (waar de klasse aan toegevoerd is (zie AddActionListener.. )
if(e.getSource() == secondenButton) { //Als de actie word uitgevoerd op secondenButton.
result.setText( rekenSecondenOm( seconden.getText() ) ); //Zet in result de text die de methode rekenSecondenOm( parameter: De text die is ingetypt in seconden (dit is het JTextField) ) returned LET OP! deze klasse kan bij seconden omdat het een private klasse is en seconden als private variabele van TijdOmrekenen gedeclareerd is
}
if(e.getSource() == minutenButton) {
result.setText( rekenMinutenOm( minuten.getText() ) ); //Hiervoor geldt hetzelfde
}
if(e.getSource() == urenButton ) {
result.setText( rekenUrenOm( uren.getText() ) ); //Hiervoor geldt hetzelfde.
}
}
}

public static void main (String args[]) { //Methode die word aangeroepen bij het starten van deze klasse.
TijdOmrekenen to = new TijdOmrekenen(); //Er word een nieuwe instantie van de klasse TijdOmrekenen gemaakt.

JFrame frame = new JFrame(); //Er word een nieuw JFrame aangemaakt. (link 5).
frame.setSize( 300, 400 ); //De grootte van het JFrame word gezet.
frame.setContentPane( to ); //Tijdomrekenen word als ContentPane (het paneel dat men kan zien) van het JFrame gezet.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Dit zorgt ervoor dat het progr. word afgesloten als men op kruisje klikt.
frame.pack(); //De componenten worden ingepakt. dit heeft met grootte etc te maken.
frame.setVisible( true ); //Het frame word zichtbaar gemaakt.
}
}



---
dit hebben we ingevoerd in java JDK, het programma Eclipse.
We krijgen te maken met het volgende probleem:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at oefenen.TijdOmrekenen.main(TijdOmrekenen.java:107)

help ons.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan