Thread: C# vraag
-
22-10-2013, 15:28 #1
C# vraag
Gegroet,
Ik wil een programmaatje schrijven met een optional value in mijn method
hieronder een uittreksel van een voorbeeld waarbij ik het niet heb kunnen doen(het is nog nooit gelukt eigenlijk.
De manier waarop we het moeten oplossen is zoals hieronder dus gene parsen en(not yet).
DE VRAAG: een optional value krijg je daar string int Voorbeeld(int value1, int value2 =0) te doen dacht ik met als voorwaarde dat enkel de laatste(n) optioneel mogen zijn.
probleem is nu dat dit nooit gaat want in programma krijg ik altijd fout de er meerde overloads zijn. Geen idee en ik zoek al 2 dagen online maar nooit zie ik wat exact het verschil is.
HELP!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ToonSecNaarUms
{
class Program
{
static void Main(string[] args)
{
int seconden;
Console.WriteLine("geef seocnden in");
seconden = Convert.ToInt32(Console.ReadLine());
toonOmzetting(seconden);
}
static void toonOmzetting(int seconden)
{
int uren, minuten, overblijvendeSeconden;
uren = seconden / 3600;
minuten = (seconden - (uren * 3600)) / 60;
overblijvendeSeconden = seconden - (uren * 3600) - (minuten * 60);
Console.WriteLine("omgezet is dit " + uren + " uren"+ ", " + minuten + " minuten en " + overblijvendeSeconden + " seconden");
Console.ReadKey(true);
}
}
}no votes
-
-
22-10-2013, 19:20 #2Member
- Registered
- 30/09/02
- Location
- Mariakerke
- Posts
- 554
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
Het zou moeten werken zoals je zegt, dus door
static void toonOmzetting(int seconden, int test = 0)
te schrijven compileert en werkt het. Ben je zeker dat je aan het compileren bent tegen het .Net framework 4.0 of meer?no votes
-
22-10-2013, 20:01 #3no votes
-
22-10-2013, 20:32 #4Member
- Registered
- 30/09/02
- Location
- Mariakerke
- Posts
- 554
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/2
no votes
-
22-10-2013, 22:16 #5Banned
- Registered
- 13/05/06
- Location
- Hoeselt
- Posts
- 9,944
- iTrader
- 48 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/72
Best in code blok zetten op het forum: leest gemakkelijker
Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ToonSecNaarUms { class Program { static void Main(string[] args) { int seconden; Console.WriteLine("geef seocnden in"); seconden = Convert.ToInt32(Console.ReadLine()); toonOmzetting(seconden); } static void toonOmzetting(int seconden) { int uren, minuten, overblijvendeSeconden; uren = seconden / 3600; minuten = (seconden - (uren * 3600)) / 60; overblijvendeSeconden = seconden - (uren * 3600) - (minuten * 60); Console.WriteLine("omgezet is dit " + uren + " uren"+ ", " + minuten + " minuten en " + overblijvendeSeconden + " seconden"); Console.ReadKey(true); } } }no votes
-
22-10-2013, 22:18 #6Banned
- Registered
- 13/05/06
- Location
- Hoeselt
- Posts
- 9,944
- iTrader
- 48 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/72
Compileert deze code? Want ik snap niet wat ik nu moet zien.
Post de code met optional params eens, zodat we kunnen kijken waar het misgaat?
Als ik je foutbeschrijving (geef deze ook eens volledig + in het Engels) een beetje begrijp, zou het kunnen dat er meerdere methods met zelfde signatures aanwezig zijn.no votes
-
22-10-2013, 23:24 #7
dit werkt uiteraard wel:
leerkracht vraagt soms om gewoon variabelen te kiezen en gebruikers geen keuze te geven dus dien ik hier zelfs geen =0 te voorzien maar als ik aan mijn gebruiker de getallen laat invullen dan zeg ik veiligheidshalve:Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace voorbeeld_optellen { class Program { static void Main(string[] args) { optellenVierGetallen(1,2,3,4); } static void optellenVierGetallen(int getal1, int getal2, int getal3, int getal4=0) { int som = getal1+getal2+getal3+getal4; Console.WriteLine("de som is: " + som); Console.ReadKey(true); } } }
"An unhandled exception of type 'System.FormatException' occurred in mscorlib.dllCode:using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace voorbeeld_optellen { class Program { static void Main(string[] args) { int getal1,getal2, getal3, getal4; Console.WriteLine("geef getal in:"); getal1 = Convert.ToInt32(Console.ReadLine()); getal2 = Convert.ToInt32(Console.ReadLine()); getal3 = Convert.ToInt32(Console.ReadLine()); getal4 = Convert.ToInt32(Console.ReadLine()); optellenVierGetallen(getal1,getal2,getal3,getal4); } static void optellenVierGetallen(int getal1, int getal2, int getal3, int getal4=0) { int som = getal1+getal2+getal3+getal4; Console.WriteLine("de som is: " + som); Console.ReadKey(true); } } }
Additional information: Input string was not in a correct format."
nu krijg ik echter een prompt wanneer ik getal 4 leeg laat, terwijl ik toch net nul als default parameter heb opgegeven?
uiteraard kan de code performanter maar met hetgeen we tot nu hebben gezien moeten we werken dus...
Alvast bedankt voor de hulp!no votes
-
22-10-2013, 23:53 #8Crew Member
- Registered
- 01/09/02
- Location
- Peutie
- Posts
- 7,664
- iTrader
- 0
- Mentioned
- 4 Post(s)
- Reputation
- 13/105
Je krijgt de fout op deze lijn omdat je ze leeg laat:
De functie Convert.ToInt32(string value) gooit namelijk een FormatException wanneer:Code:getal4 = Convert.ToInt32(Console.ReadLine());
Je gaat dus eerst moeten opvangen of de data die je uitleest geldig is. Bijvoorbeeld:value does not consist of an optional sign followed by a sequence of digits (0 through 9).
Maar, wanneer je bovenstaande methode gebruikt ga je dus altijd een waarde in "getal4" hebben. Je default value die je in je functie declaratie opgeeft heeft dus geen nut.Code:string input = Console.ReadLine(); int getal4 = 0; // Default value if (!String.IsNullOrEmpty(input)) { getal4 = Convert.ToInt32(input); }
Ook in jouw code doet die default waarde weinig. Je geeft de variabele namelijk altijd mee in je aanroep van de functie. Die default waarde gaat alleen werken wanneer je geen variabele zou meegeven.Last edited by Tyfius; 22-10-2013 at 23:59.
Vanaf nu gaan we verder op BeyondGaming!
In deze thread wordt uitgelegd hoe je jouw account kan migreren.no votes
-
23-10-2013, 00:13 #9
gesnopen maar aangezien we nog geen if clause hebben gezien ga ik er anders moeten aan geraken. Morgen nog eens op sjieken. Alvast bedankt voor je (enorm) onderbouwde uitleg!
no votes
-
23-10-2013, 09:08 #10Member
- Registered
- 17/07/02
- Location
- Wilrijk
- Posts
- 1,994
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 9/16
waarom niet params gebruiken in dit geval
params (C# Reference)no votes
-
24-10-2013, 00:19 #11Banned
- Registered
- 13/05/06
- Location
- Hoeselt
- Posts
- 9,944
- iTrader
- 48 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/72
Denk dat dat misschien nog een beetje ver van zijn bed is :-)
A propos: ik raad je nu al aan (mits de leerkracht er geen problemen mee heeft) om duidelijke Engelse namen te gaan gebruiken. Bespaart jou en je collega's alleen maar ergernissen :-)no votes
-
24-10-2013, 16:10 #12Member
- Registered
- 06/11/02
- Location
- Waarmaarde
- Posts
- 8,996
- iTrader
- 71 (100%)
- Mentioned
- 7 Post(s)
- Reputation
- 1/415
waar jij op zoek naar bent zijn optionele parameters zoals Moto zegt.
parameter lijst opvullen naargelang de ingave in uw console. En in uw functie paramaterlijst weer overlopen en optellen ...no votes

