Thread: C# vraag

  1. #1

    Registered
    27/02/12
    Location
    far away
    Posts
    33
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0

    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  

  2. #2

    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  

  3. #3

    Registered
    27/02/12
    Location
    far away
    Posts
    33
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Krueger View Post
    This quote is hidden because you are ignoring this member. Show
    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?
    jep. 4.5.50en nog een beetje

    ik snap het totaal niet. Zal waarschijnlijk een komma, spaties of iets dommers zijn dat fout staat of.. maar syntax lijkt me aanvaardbaar

    als er nog mensen zijn, shoot!
    no votes  

  4. #4

    Registered
    30/09/02
    Location
    Mariakerke
    Posts
    554
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    2/2
    Quote Originally Posted by ZZ5 View Post
    This quote is hidden because you are ignoring this member. Show
    jep. 4.5.50en nog een beetje

    ik snap het totaal niet. Zal waarschijnlijk een komma, spaties of iets dommers zijn dat fout staat of.. maar syntax lijkt me aanvaardbaar

    als er nog mensen zijn, shoot!
    Zet eens je volledige code hier die niet build anders.
    no votes  

  5. #5

    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  

  6. #6

    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  

  7. #7

    Registered
    27/02/12
    Location
    far away
    Posts
    33
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    dit werkt uiteraard wel:



    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);
        
        
        
        }
        
        
        
        }
    }
    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)
            {
                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);
        
        
        
        }
        
        
        
        }
    }
    "An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

    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  

  8. #8
    Tyfius's Avatar
    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:
    Code:
    getal4 = Convert.ToInt32(Console.ReadLine());
    De functie Convert.ToInt32(string value) gooit namelijk een FormatException wanneer:

    value does not consist of an optional sign followed by a sequence of digits (0 through 9).
    Je gaat dus eerst moeten opvangen of de data die je uitleest geldig is. Bijvoorbeeld:

    Code:
    string input = Console.ReadLine();
    int getal4 = 0; // Default value
    
    if (!String.IsNullOrEmpty(input)) {
        getal4 = Convert.ToInt32(input);
    }
    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.

    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  

  9. #9

    Registered
    27/02/12
    Location
    far away
    Posts
    33
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    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  

  10. #10
    Moto's Avatar
    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  

  11. #11

    Registered
    13/05/06
    Location
    Hoeselt
    Posts
    9,944
    iTrader
    48 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/72
    Quote Originally Posted by Moto View Post
    This quote is hidden because you are ignoring this member. Show
    waarom niet params gebruiken in dit geval

    params (C# Reference)
    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  

  12. #12
    TooChé's Avatar
    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  

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in