klasse maken

Status
Niet open voor verdere reacties.

Tjennne

Gebruiker
Lid geworden
22 apr 2008
Berichten
33
Opdracht:
Schrijf de specificatie voor een klasse Tijdstip met daarin drie attributen van het type int voor de uren, de minuten en de seconden. Geef de klasse een constructor met 3 argumenten voor het initialiseren van 3 attributen. Geef de klasse 2 methoden: volgendUur(), waarmee je het tijdstip een uur verder zet, en een methode toString(), zodat je een bepaald tijdstip op het scherm kunt laten zien. Zorg ervoor dat de tijdstippen op een nette manier op het scherm komen, bijvoorbeeld: 15:05:03. Je moet zelf voor het juiste aantal nullen in de uitvoer zorgen. Het is het handigst als je daar een aparte methode voor maakt die door toString() wordt aangeroepen. Geef de klasse ook methoden volgendeMinuut() en volgendeSeconde(). Maak tenslotte een applet met 3 knoppen waarmee je het volgende uur, de volgende minuur of de volgende seconden kunt instellen.

Nu heb ik al een begin, maar ik weet niet wat ik met de volgende foutmeldingen aan moet:

"opgave2_2.java": Error #: 460 : method toString() in class opgave2_2.opgave2_2.Tijdstip cannot override method toString() in class java.lang.Object with different return type, was java.lang.String at line 45, column 17

"opgave2_2.java": Error #: 404 : can't return a value from method whose result type is void at line 48, column 14

Wat heb ik verkeerd of nog niet gedaan?

Dit is mijn werk:
Code:
public class opgave2_2 extends Applet
{
  private Tijdstip tijd;

  public void init()
    {
      tijd = new Tijdstip (00,00,00);
    }
  public void paint(Graphics g)
    {
      g.drawString(""+ tijd, 30,20);

      g.drawString("een uur later",30,40);
      tijd.volgendUur();
      g.drawString(""+ tijd, 30,60);

      g.drawString("een minuur later",30,40);
      tijd.volgendeMinuut();
      g.drawString(""+ tijd, 30,80);

      g.drawString("een seconde later",30,40);
      tijd.volgendeSeconde();
      g.drawString(""+ tijd, 30,100);
    }
  class Tijdstip
    {
      private int uren;
      private int minuten;
      private int seconden;

    public Tijdstip(int uren, int minuten, int seconden)
      {
        this.uren = uren;
        this.minuten = minuten;
        this.seconden = seconden;
      }

    public void toString()
      {
      String str = "Tijdstip =" + ":"+ uren + ":"+  minuten + ":"+ seconden;
      return str;
      }

    public void volgendUur()
      { uren++;
      }

    public void volgendeMinuut()
      { minuten++;
      }

    public void volgendeSeconde()
      { seconden++;
      }
  }
}
 
Laatst bewerkt door een moderator:
Hoe kan ik ervoor zorgen dat de tijd juist in beeld komt??? Bijv. 15.05.03.
Ik dacht het volgende, maar dat werkt niet:

public String toString()
{
String str = "Tijdstip =" + uren + ":"+ minuten + ":"+ seconden;
if (uren<10){"0"+uren;}else {uren;};
return str;
}

En hoe kan ikvoor zorgen dat het aantal uren niet verder telt dan 24??
 
Code:
Uren = Uren % 24;

% staat voor mod.
Mod betekent dat je het getal deelt door 24 en dan de restwaarde teruggeeft

Voorbeelden:

10 % 3 = 1
11 % 3 = 2
12 % 3 = 0
 
Laatst bewerkt:
Ok, bedankt!
Maar hoe krijg ik die nullen erbij in de tijd???
 
Code:
public String toString()
{
	String str = "Tijdstip =" + uren + ":"+ minuten + ":"+ seconden;
	if(uren<10){
		"0"+uren; // Dit is niet helemaal de goede syntax
		}else { // je hebt geen else nodig, als er er niets mee doet.
		uren;
		};
	return str;
}
Wat je er van kan maken is zoiets:

Code:
public String toString()
{
	String result = "Tijdstip = ";
	uren = uren % 24;
	minuten = minuten % 60;
	seconden = seconden % 60;
	
	if(uren < 10){
		result = result + "0" + uren + ":";
		} else{
		result = result + uren + ":";
		}
	}
	//hier nog de minuten en seconden doen.
	return result;
}
 
Of je gebruikt String's makkelijke printf(...) methode:

Code:
class Tijd {
    
    private int uren, minuten, seconden;
      
    // ...
    
    public String toString() {
        return String.format("%02d:%02d:%02d", uren, minuten, seconden);
    }
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan