wykorzystwanie parametrów z metody

0

Witam mam pytanie. W jaki sposób mogę wykorzystać parametr z poprzedniej metody w nowej. chodzi mi dokładnie o to:

public void ObliczSpalanie()
{
Console.WriteLine("Podaj dlugosc trasy");

        double dlugoscTrasy = double.Parse(Console.ReadLine());
        double spalanie;
        spalanie = (srednieSpalanie * dlugoscTrasy) / 100 ;

        Console.WriteLine("\n" + "Spalanie na twoją trase to : " + spalanie + " L ");

    }


    public void ObliczKoszt()
    {

        double koszt;
        koszt = spalanie  // ta wartość ma być zaporzyczona z poprzedniej metody //   * cena


    }

w jaki sposób miałbym to zrobić ? Jestem początkujący więc proszę o wyrozumiałość.

0
public double ObliczKoszt(double spalanie)
    {

        double koszt = 0;
        koszt = spalanie  * cena;
        return koszt;

    }

Wywołanie
double koszt = ObliczKoszt(spalanie);

koniecznie jakaś w miarę świerza (sic!) książka na początek bo pytać się o taki rzeczy nie ma sensu. Stracisz więcej czasu na czekanie na odpowiedź.

1
public void ObliczSpalanie()
{
Console.WriteLine("Podaj dlugosc trasy");

        double dlugoscTrasy = double.Parse(Console.ReadLine());
        double spalanie;
        spalanie = (srednieSpalanie * dlugoscTrasy) / 100 ;

        Console.WriteLine("\n" + "Spalanie na twoją trase to : " + spalanie + " L ");

double koszt = ObliczKoszt(spalanie); // TU JEST WYWOŁANIE

Console.WriteLine("\n" + "Twój koszt to: " + koszt + " PLN ");

    }
0

wrzucę tutaj swój kod z nadzieją że ktoś go przeanalizuje i odpowie co zrobiłem źle i czego mam się przestrzegać na przyszłość

namespace Car
{
public class Program
{
static void Main(string[] args)
{

        Car car1 = new Car { rok = 1998, marka = "Audi", model = "A4", iloscDrzwi = 5, pojemnoscSilnika = 1.8, srednieSpalanie = 8 };

        if (car1.rok > 2018)
        {
            Console.WriteLine("wystarczy 2018");
            System.Threading.Thread.Sleep(3000);
            System.Diagnostics.Process.GetCurrentProcess().Kill();


        }

        else if (car1.rok < 1769)
        {
            Console.WriteLine("W starożytności nie było samochodów");
            System.Threading.Thread.Sleep(3000);
            System.Diagnostics.Process.GetCurrentProcess().Kill();
        }



        Car car2 = new Car { rok = 2008, marka = "Ford", model = "Mondeo", iloscDrzwi = 5, pojemnoscSilnika = 2.5, srednieSpalanie = 11 };

        if (car2.rok > 2018)
        {
            Console.WriteLine("wystarczy 2018");
            System.Threading.Thread.Sleep(2000);
            System.Diagnostics.Process.GetCurrentProcess().Kill();


        }

        else if (car2.rok < 1769)
        {
            Console.WriteLine("W starożytności nie było samochodów");
            System.Threading.Thread.Sleep(2000);
            System.Diagnostics.Process.GetCurrentProcess().Kill();
        }


        string carName = "mój samochod: \n";



        Console.WriteLine(carName + Environment.NewLine + car1.rok + "\n" + car1.marka + "\n" + car1.model + "\n" + car1.iloscDrzwi + "\n" + car1.pojemnoscSilnika + "\n");

        car1.ObliczSpalanie();

        

        Console.WriteLine(Environment.NewLine + car2.rok + "\n" + car2.marka + "\n" + car2.model + "\n" + car2.iloscDrzwi + "\n" + car2.pojemnoscSilnika + "\n");

        car2.ObliczSpalanie();


        Console.ReadKey();
    }
}





class Car
{

    public int rok { get; set; }

    public string marka { get; set; }

    public string model { get; set; }

    public int iloscDrzwi { get; set; }

    public double pojemnoscSilnika { get; set; }

    public double srednieSpalanie { get; set; }

    public double cena = 4.66;
    
    


    public void ObliczSpalanie()
    {
        Console.WriteLine("Podaj dlugosc trasy");

        double dlugoscTrasy = double.Parse(Console.ReadLine());
        double spalanie;
        spalanie = (srednieSpalanie * dlugoscTrasy) / 100 ;

        Console.WriteLine("\n" + "Spalanie na twoją trase to : " + spalanie + " L ");

        double koszt = ObliczKoszt(spalanie);

        Console.WriteLine("\n" + " Twój koszt to: " + koszt + " PLN "); 

    }


    public double ObliczKoszt(double spalanie)
    {

        double koszt = 0;
        koszt = spalanie * cena;
        return koszt;
        

    }
                

}

}

z góry dziękuję i pozdrawiam :)

0

sorry za OT, ale czemu ma to służyć?

System.Diagnostics.Process.GetCurrentProcess().Kill();
1

Twoja metoda "ObliczSpalanie" wcale nie oblicza spalania - ona wczytuje dane, oblicza (spalanie oraz koszt) i wyświetla wynik - czyli co najmniej 4 rzeczy. W miarę możliwości staraj się, aby metody robiły jedną rzecz, a nie wiele. Zwłaszcza, niech nie zajmują się wczytywaniem/wyświetlaniem danych - metody raczej powinny dostawać informacje "z zewnątrz" przez parametry albo przez pola/właściwości obiektów do których należą, a powinny wyniki raczej zwracać niż wyświetlać.

Wczytywanie/wyświetlanie możesz zrobić w oddzielnym miejscu w klasie Program - na przykład tam budując metodę za to tylko odpowiedzialną. Zobacz też, że masz powtarzający się kod w metodzie Main - może warto stworzyć oddzielną metodę, która będzie pytać o ten rok i tworzyć (lub nie) obiekt i go zwracać. A już w ogóle najlepiej, to aby program się nie wyłączał po podaniu błędnych danych, ale może pytał o to jeszcze raz ;)

Nazwy właściwości w C# (marka, rok, itp. w twoim przypadku) nazywane są z wielkiej litery - taka konwencja, warto się trzymać, aby twój kod "pasował" do kodu pisanego przez innych programistów, bo łatwiej będzie współpracować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1