C # uppgift

reflection

Ny medlem
Gick med
17 Oct 2009
Ort
Eslöv
Hoj
cbr
Håller på att lära mig C#, har bara hållt på någon vecka så alla förklaringar får gärna tas på väldigt lätt nivå :tungan

Grunduppgiften ser ut såhär;
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Fordon
    {
        public string sFärg;
        public string sTillverkare;
        public int nAntalDörrar;
        public int nMaxHastighet;
    }

    public class Program
    {
        static void Main(string[] args)
        {
            Fordon minBil = new Fordon();

            Console.Write("Ange bilens färg: ");
            string s = Console.ReadLine();
            minBil.sFärg = s;

            Console.Write("Ange bilmärke: ");
            minBil.sTillverkare = Console.ReadLine();

            Console.Write("Hur många dörrar har bilen? ");
            s = Console.ReadLine();
            minBil.nAntalDörrar = Convert.ToInt32(s);

            Console.Write("Hur fort kan den köra? ");
            s = Console.ReadLine();
            minBil.nMaxHastighet = Convert.ToInt32(s);


            Console.WriteLine("\nDin bil är tillverkad av " + minBil.sTillverkare);
            Console.WriteLine("Färgen är " + minBil.sFärg);
            Console.WriteLine("den har " + minBil.nAntalDörrar + "dörrar och maxhastigheten är " + minBil.nMaxHastighet);
            Console.WriteLine("\nTryck Enter för att avsluta");
            Console.ReadLine();
        }
    }
}

Från den koden skall jag sedan göra följande:
"Ändra instansvariablerna i klassen Fordon så dessa blir "private".
Lägg sedan till metoder i klassen Fordon som kan sätta och hämta instansvariablernas värden.
Justera därefter Main så att programmet använder dessa metoder istället."


Jag ändrar sFärg till private, lägger till en metod för att läsa in värdet, och en metod för att returnera värdet. (är detta rätt?? jag fick metoden för att returnera av läraren så den bör vara rätt. Metoden för att läsa in värdet skulle jag dock göra själv, och jag är allt utom säker....)

Nästa problem är hur jag får värdet från sFärg ner i "svarstexten" längst ner sedan. Hur får jag den att hitta rätt värde?


(det som är fetstilat är ändrat/tillagt)

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Fordon
    {
       [B] private [/B]string sFärg;
        public string sTillverkare;
        public int nAntalDörrar;
        public int nMaxHastighet;


        [B]public static void Färg(string sFärg)
        {
            Console.Write("Ange bilens färg: ");
            sFärg = Console.ReadLine();
        }

        public string ReturnerarFärg()
        {
            return this.sFärg;
        }[/B]
        
    }

    public class Program
    {
        static void Main(string[] args)
        {
            Fordon minBil = new Fordon();

            
            Console.Write("Ange bilmärke: ");
            minBil.sTillverkare = Console.ReadLine();

            Console.Write("Hur många dörrar har bilen? ");
            string s = Console.ReadLine();
            minBil.nAntalDörrar = Convert.ToInt32(s);

            Console.Write("Hur fort kan den köra? ");
            s = Console.ReadLine();
            minBil.nMaxHastighet = Convert.ToInt32(s);


            Console.WriteLine("\nDin bil är tillverkad av " + minBil.sTillverkare);
            Console.WriteLine("Färgen är " +[B]??????)[/B];
            Console.WriteLine("den har " + minBil.nAntalDörrar + "dörrar och maxhastigheten är " + minBil.nMaxHastighet);
            Console.WriteLine("\nTryck Enter för att avsluta");
            Console.ReadLine();
        }
    }
}

Någon som kan hjälpa mig? :död
 
Eftersom det finns properties i C# som kan definieras på ett enkelt sätt så föreslår jag du använder sådana istället för funktionerna.

Tänker inte skriva dig svaren i pannan, men ger ett exempel. :)

Code:
public class Vehicle
{
  private int wheels;

  public int Wheels
  {
    get
    {
      return wheels;
    }
    set
    {
      wheels = value;
    }
  }
}


public class MyVehicle
{
  public static void Main()
  {
    Vehicle v = new Vehicle();

    v.Wheels = 2;

    System.Console.WriteLine("My vehicle has " + v.Wheels + " wheels.");
  }
}

(Och jag har inte testat det, så det är inte säkert det kompilerar bara sådär rakt av, men du förstår nog principen.)
 
Nu har jag inte läst C# men java och det borde inte skilja speciellt.
Tolkar jag dig rätt så undrar du om:

Code:
public static void Färg(string sFärg)
        {
            Console.Write("Ange bilens färg: ");
            sFärg = Console.ReadLine();
        }

är rätt om du ska ge bilen en färg?
Vilket jag tror blir fel (det blir det i java iaf.) eftersom string sFärg är en indata variabel och du måste skicka med den för att funktionen ska fungera.
Lite som att hälla i bensin med stängt tanklock.

Du bör anropa allt från main
Dvs. fixa utskriften och läs in variabeln och anropa funktionen med inmatade variabeln som argument.
Sen i funktionen så sätter du argumentet som bilens färg.
När du sedan ska skriva ut skiten i main så anropar du bara funktionen som din lärare skrivit.

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Fordon
    {
        private string sFärg;
        public string sTillverkare;
        public int nAntalDörrar;
        public int nMaxHastighet;


        [B]public static void Färg(string sFärg)
        {
            sFärg = this.sFärg;//sätter indata variabeln i metoden till privata variablen sFÄRG
        }[/B]

        public string ReturnerarFärg()
        {
            return this.sFärg;
        }
        
    }

    public class Program
    {
        static void Main(string[] args)
        {
            Fordon minBil = new Fordon();

            
            Console.Write("Ange bilmärke: ");
            minBil.sTillverkare = Console.ReadLine();

            Console.Write("Hur många dörrar har bilen? ");
            string s = Console.ReadLine();
            minBil.nAntalDörrar = Convert.ToInt32(s);

            Console.Write("Hur fort kan den köra? ");
            s = Console.ReadLine();
            minBil.nMaxHastighet = Convert.ToInt32(s);

[B]Console.Write("Ange bilens färg: ");
variabelx = Console.ReadLine();
Färg(variabelx);//anropar funktionen med indatat som argument dvs. den färgen du skriver in[/B]


            Console.WriteLine("\nDin bil är tillverkad av " + minBil.sTillverkare);
            Console.WriteLine("Färgen är " + [B]ReturnerarFärg());//skriver ut fägen som returneras av metoden returnera färg[/B]
            Console.WriteLine("den har " + minBil.nAntalDörrar + "dörrar och maxhastigheten är " + minBil.nMaxHastighet);
            Console.WriteLine("\nTryck Enter för att avsluta");
            Console.ReadLine();
        }
    }
}

Jag hoppas att du fattar lite iaf.
Jag tänker java så det är inte säkert att det fungerar men förhoppningvis så hjälper det lite.
 
Nyheter
Nicky Hayden-specialversion – såld för 2,5 miljoner

En exklusiv motorcykel med ...

BMW Motorrad Vision CE

På IAA Mobility 2025-mässan...

Höstrusch för våra fotografer

Inte bara sommarmånaderna, ...

Jonathan Rea avslutar sin racingkarriär

Efter nästan två decennier ...

Yamaha debuterar med V4 i MotoGP

Yamaha har meddelat att för...

Hojmys i Ugglans Park

Ända sedan början av 90-tal...

MC-mässan 2026

MC-Mässan är tillbaka 23–25...

Bike kör Stark Varg EX!

Under hösten kommer Bike gö...

Customhoj Bike Show 2026

Den 23 till 25 januari körs...

Racing på Kjula Dragway till helgen

Den kommande helgen (23-24 ...

Back
Top