wykorzystwanie parametrów z metody

Odpowiedz Nowy wątek
2018-12-31 14:15
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ść.

Pozostało 580 znaków

2018-12-31 14:45
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ź.

edytowany 1x, ostatnio: jacek.placek, 2018-12-31 14:46
W sensie, że ta książka ma mieć świerzb? - somekind 2018-12-31 14:53
Jak wartość ma być "zaporzyczona" to książka może mieć świerzb. - jacek.placek 2018-12-31 14:56
Zachowujesz się antydydaktycznie. - somekind 2018-12-31 14:57
No co? Teraz takie bzdury w książkach, ze wszystkiego można się spodziewać. - jacek.placek 2018-12-31 14:58

Pozostało 580 znaków

2018-12-31 15:07
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 ");

    }
edytowany 1x, ostatnio: jacek.placek, 2018-12-31 15:07

Pozostało 580 znaków

2018-12-31 15:14
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 :)

Wrzucając kod używaj znaczników ``` aby go oznaczyć i dodać kolorowanie składni. - Ktos 2019-01-01 13:28

Pozostało 580 znaków

2019-01-01 14:38
0

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

System.Diagnostics.Process.GetCurrentProcess().Kill();
Testowałem różne rozwiązania. Akurat ta linia tekstu była odpowiedzialna za zakończenie programu po wpisaniu nie prawidłowych danych - Mariusz Liszewski 2019-01-01 17:01

Pozostało 580 znaków

2019-01-01 17:58
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ć.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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