Bij getal verlagen werkt miijn oefening niet

Status
Niet open voor verdere reacties.

rambomambo

Gebruiker
Lid geworden
9 dec 2012
Berichten
163
Ik heb een klein probleem. Ik zou in een textbox een getal willen invullen en dan met 2 buttons getal optellen en getal aftrekken doen maar dat hij niet onder de 0 mag gaan. Op het eerst zicht werkt het maar als mijn saldo 200 is en ik doe dan 300 aftrekken dan komt er -100 als ik daarna wil aftrekken dan krijg ik de melding saldo ontoereikend. Ik zou ook graag de 2 verschillende delen in 2 klassen willen stoppen en dit lukt helemaal niet. Dus getal verhogen wil ik in een klasse en getal verlagen wil ik ook in een klasse

hieronder vind je wat ik heb Alvast bedankt.

Code:
    int saldo = 200;
        int nieuwsaldo;
        

        
    
   
    
             
        

        private void btnSaldoDown_Click(object sender, RoutedEventArgs e)
        {

               if (saldo > 0)
        {
            nieuwsaldo = Convert.ToInt32(tbSaldo.Text);
            saldo = saldo - nieuwsaldo;
            lblSaldo.Content = saldo;
        }
        else
        {
            MessageBox.Show("saldo ontoereikend");
         
        }

           
        }

        private void btnSaldoUp_Click(object sender, RoutedEventArgs e)
        {
            if (saldo >= 0)
            {
                nieuwsaldo = Convert.ToInt32(tbSaldo.Text);
                saldo = saldo + nieuwsaldo;
                lblSaldo.Content = saldo;
            }

         
        }
    }
}
 
Laatst bewerkt door een moderator:
Is op zich niet heel moeilijk. Je wilt dus het getal x optellen of aftrekken van het saldo?

Pseudocode:

[cpp]decimal saldo=0; //start op 0

private void Optellen(decimal x){
saldo += x;
}

private void Aftrekken(decimal x){
if (saldo - x >= 0){
saldo -= x;
}else{
//ontoereikend!
}
}[/cpp]

Verder begrijp ik niet waarom je hier aparte klassen voor zou willen gebruiken ... ?
 
Voor een beter overzicht en ook omdat ik voor school klassen moet gebruiken.
en ik weet echt niet hoe ik daar aan moet beginnen.
 
Laatst bewerkt door een moderator:
Je moet gewoon even denken aan 'het echte leven'

Alles wat een object is kun je in een class zetten; pinpas, pinautomaat, bankrekening, de bank zelf eventueel, etc

Dus de code hierboven kun je copy paste in een 'Account' class:

Zoiets, net wat je wilt:

Code:
class Account
{
	private int _balance;
	
	public int Deposit(int amount)
	{
		_balance+=amount;
		return _balance; //return new balace
	}
	public int Withdraw(int amount)
	{
		if(_balance < amount)
			throw new InsufficientFundsException(_balance);
				
		_balance-=amount;
		return amount;
	}	
}
 
Is op zich niet heel moeilijk. Je wilt dus het getal x optellen of aftrekken van het saldo?

Pseudocode:

[cpp]decimal saldo=0; //start op 0

private void Optellen(decimal x){
saldo += x;
}

private void Aftrekken(decimal x){
if (saldo - x >= 0){
saldo -= x;
}else{
//ontoereikend!
}
}[/cpp]

Verder begrijp ik niet waarom je hier aparte klassen voor zou willen gebruiken ... ?

sty maar ik begrijp je code niet
in mijn code bovenaan vind ik het heel simpel om een WPF te schrijven.
Nu is het probleem dat het wel perfect werkt maar als ik een soldo van 200 heb en ik zeg ik wil 300afhalen komt de melding ontoereikend wel maar heeft hij er wel 300 afgetrokken waardoor ik -300heb als ik 0euro saldo heb ik wil geld aftrekken dan komt er wel ontoereikend zonder er een negatieve waarde in saldo komt
 
Voordat je een bedrag wilt opnemen zul je moeten kijken of het saldo niet kleiner is dan dat bedrag, een 'is groter dan 0' check is niet voldoende.
En pas als dit allemaal klopt haal je pas dat bedrag van je saldo af.


(wel een beetje lastig met meerdere topics over hetzelfde project :p)
 
sty maar ik begrijp je code niet
Nu is het probleem dat het wel perfect werkt maar als ik een soldo van 200 heb en ik zeg ik wil 300afhalen komt de melding ontoereikend wel maar heeft hij er wel 300 afgetrokken waardoor ik -300heb als ik 0euro saldo heb ik wil geld aftrekken dan komt er wel ontoereikend zonder er een negatieve waarde in saldo komt
In mijn codevoorbeeld is dat anders niet het geval...
Wat is je huidige code?
 
Code:
int saldo = 200;
        int nieuwsaldo;
        

        
    
   
    
             
        

        private void btnSaldoDown_Click(object sender, RoutedEventArgs e)
        {

               if (saldo > 0)
        {
            nieuwsaldo = Convert.ToInt32(tbSaldo.Text);
            saldo = saldo - nieuwsaldo;
            lblSaldo.Content = saldo;
        }
        else
        {
            MessageBox.Show("saldo ontoereikend");
         
        }

           
        }

        private void btnSaldoUp_Click(object sender, RoutedEventArgs e)
        {
            if (saldo >= 0)
            {
                nieuwsaldo = Convert.ToInt32(tbSaldo.Text);
                saldo = saldo + nieuwsaldo;
                lblSaldo.Content = saldo;
            }

         
        }
    }
}
 
Laatst bewerkt door een moderator:
Waarom mag het saldo niet kleiner zijn dan 0 als er opgeteld wordt?
Waarom 2 variabelen voor het saldo?

[cpp]int saldo = 200;

private void btnSaldoDown_Click(object sender, RoutedEventArgs e)
{
if (saldo > 0)
{
saldo -= Convert.ToInt32(tbSaldo.Text); //Trekt tbSaldo.Text van Saldo af. Dat is de bedoeling toch?
lblSaldo.Content = saldo.ToString();
}
else
{
MessageBox.Show("Saldo ontoereikend.");
}
}

private void btnSaldoUp_Click(object sender, RoutedEventArgs e)
{
saldo += Convert.ToInt32(tbSaldo.Text);
lblSaldo.Content = saldo.ToString();
}[/cpp]
 
inderdaad maar hier ook weer dezelfde fout als bij mij.
het werkt zolang je niet meer afhaalt dan het huidige saldo
dus als het saldo 200 is en je haalt 200ag werkt dit als je er daarna nog eens 50 wil afhalen krijg ik ontoereikend.

Maar als het saldo 200 is en ik haal 250 af krijg ik ook de fout ontoereikend maar zie ik bij saldo -50 staan en dit zou dus niet zo mogen zijn
 
Laatst bewerkt door een moderator:
En als je:

[cpp]if (saldo >= Convert.ToInt32(tbSaldo.Text))[/cpp]

i.p.v.

[cpp]if (saldo > 0)[/cpp]

doet?
 
Je moet eerst controleren of je na aftrekken niet negatief uitkomt. Zo niet, aftrekken. Zo wel, niet aftrekken
 
@rambomambo: Het is niet nodig om een bericht te quoten als deze direct er boven staat. Gebruik dan gewoon de "Reageer op vraag"-knop :)
 
En als je:

[cpp]if (saldo >= Convert.ToInt32(tbSaldo.Text))[/cpp]

i.p.v.

[cpp]if (saldo > 0)[/cpp]

doet?

ja bedankt dit is de correcte oplossing. Ik heb dit wel eens gebruikt maar compleet vergeten dat je ook kan converten in een if
 
OK prima! :)
Zet je de vraag even op opgelost?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan