problem z klasami

0

Witam.Mam taki mały problem z wywołaniem metody z klasy,nie będę pokazywał całego kodu ponieważ nie ma takiej konieczności tylko 2 fragmenty w których kryje się błąd

 using System;

class Start
{
    public string jezyk;
    static void Main()
    {
        Start S = new Start();
        PisanieWspak P=new PisanieWspak();
        Jezyk J = new Jezyk();
        string _odp="";
        while ((_odp != "1") && (_odp != "2"))
        {

            Console.WriteLine("Select language");
            Console.WriteLine("1.PL");
            Console.WriteLine("2.ENG");
            ConsoleKeyInfo odp = Console.ReadKey();
            _odp = Convert.ToString(odp.KeyChar);
            S.jezyk = _odp;
            if (_odp == "1") J.jezykPL();
            if (_odp == "2") J.jezykENG();
            if ((_odp != "1") && (_odp != "2"))

I

using System;

class PisanieWspak
{
    public void wpsak()
    {
        Jezyk J = new Jezyk();
        Start S = new Start();

        if (S.jezyk == "1") J.jezykPL();    
        if (S.jezyk == "2") J.jezykENG();

        Console.WriteLine(J.zd);  // TEGO NIE CHCE MI WYŚWIETLIĆ
        string wyraz = Console.ReadLine();
        string odwrocon = "";
        for (int i = 1; i <= wyraz.Length; i++) 

Mam też 3 klasę ze wszystkimi słówkami ( te skróty ) i w klasie 'Start' działa wsszystko Ok a w tej coś nie chce tego mi wyświetlić...
Pozdrawiam
Marek

0

Polecam breakpoint, debugger oraz klawisze F5, F10 i F11. Z kodu, który dałeś nic nie wynika - nie ma nigdzie chociażby wywołania metody wpsak() klasy PisanieWspak.

0

Wszystko fajnie, tylko co to jest to

(J.zd)

Jeśli ma być to metoda, to wywołujesz ją w zły sposób. Pokaż kod tej metody.

0

Co to znaczy że TEGO NIE CHCE MI WYŚWIETLIĆ? Wyjątek? Nic się nie pokazuje na ekranie?

Gdybyś miał wątpliwości, zmienne J i S w metodzie wspak nie mają nic wspólnego ze zmiennymi w Main. To znaczy że

Start S = new Start(); 
if (S.jezyk == "1") J.jezykPL();    
if (S.jezyk == "2") J.jezykENG();

Jest kodem bezsensownym.

0

dobra macie cały kod są 3 klasy :class Jezyk
{
public string ccz, sjwzpw, pc, zwzlis, zdp,zd,ow;
public void jezykPL()
{

    ccz = "Co chcesz zrobić?";
    sjwzpw = "1.Sprawdzić jak wygląda zdanie pisane wspak";
    pc = "2.Policzyć coś";
    zwzlis = "3.Zagrać w zgadywanie liczb i słów";
    zdp = "4.zakończyć działanie programu";
    zd = "wprowadź jakieś zdanie";
    ow = "odwrócony wyraz to: ";
}
public void jezykENG()
{
    ccz = "What you want to do";
    sjwzpw = "1.Look how it looks sentence written backwards";
    pc = "2.count something";
    zwzlis = "3.Play the guessing of numbers and words";
    zdp = "4.quit";
    zd = "enter the phrase";
    ow = "inverted word is: ";
}

}

using System;

class Start
{
public string jezyk;
static void Main()
{
Start S = new Start();
PisanieWspak P=new PisanieWspak();
Jezyk J = new Jezyk();
string _odp="";
while ((_odp != "1") && (_odp != "2"))
{

        Console.WriteLine("Select language");
        Console.WriteLine("1.PL");
        Console.WriteLine("2.ENG");
        ConsoleKeyInfo odp = Console.ReadKey();
        _odp = Convert.ToString(odp.KeyChar);
        S.jezyk = _odp;
        if (_odp == "1") J.jezykPL();
        if (_odp == "2") J.jezykENG();
        if ((_odp != "1") && (_odp != "2"))

        {
            Console.Clear();
            Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("ERROR!\nTRY AGAIN");
            Console.ResetColor();

        }

    }

    Console.WriteLine(J.ccz);
    Console.WriteLine(J.sjwzpw);
    Console.WriteLine(J.pc);
    Console.WriteLine(J.zwzlis);
    Console.WriteLine(J.zdp);
    ConsoleKeyInfo odpo = Console.ReadKey();
    Console.Clear();
    switch (odpo.KeyChar)
    {
        case '1':
            {

                P.wpsak();

                break;
            }
        case '2':
            {
                break;
            }
        case '3':
            {
                break;
            }
        case '4':
            {
                break;
            }

        default:
            {

                break;
            }

    }
}

}

using System;

class PisanieWspak
{
public void wpsak()
{
Jezyk J = new Jezyk();
Start S = new Start();

    if (S.jezyk == "1") J.jezykPL();
    if (S.jezyk == "2") J.jezykENG();

    Console.WriteLine();
    string wyraz = Console.ReadLine();
    string odwrocon = "";
    for (int i = 1; i <= wyraz.Length; i++)
    {
        char znak = wyraz[wyraz.Length - i];
        odwrocon += znak;
    }
    Console.WriteLine(J.ow + odwrocon);
    Console.ReadLine();
}

}

0

MSN miał rację.

Tak to nie zadziała. Obiekt klasy, który deklarujesz w metodzie nie jest widoczny nigdzie poza samą metodą, w której deklarujesz zmienną. Aby ominąć ten problem musisz wywołać metodę wpsak razem z parametrami, w których przekażesz instancje wykorzystywanych w Main'e klas - Jezyk i Start.

0

Męczę się już z tymi metodami i klasami 2 tydzień,a kiedy myślę że już to rozumiem ,wychodzi że tego nie rozumiem ;/

1

Może mi ktoś wyjaśnić, o co w tym wszystkim chodzi? Bo może ja czegoś nie rozumiem, ale dla mi to wygląda na perełkę jakąś.

1
marek napisał(a)

Męczę się już z tymi metodami i klasami 2 tydzień,a kiedy myślę że już to rozumiem ,wychodzi że tego nie rozumiem ;/

Nawet nie opisałeś co ma ten program robić. Dałeś kod, który ma z programowaniem tyle wspólnego ile Wisła z Ligą Mistrzów.
Znajdź jakiś kurs/książkę i porządnie poczytaj o programowaniu obiektowym. To nie jest rzecz, którą można opanować za jeden wieczór, szczególnie na początku.

0

Mam kurs z tej stronki ( Rozdział 5 ) ale kiedy próbuje siętego uczyć to gdzieś w połowie "programowania obiektowego" po prostu gubie się :/

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