instrukcja switch wariuje

0

Mam problem z instrukcja switch otoz nie wykonuje całości casa
Podam troche szczegółów:

    public enum Kierunek
    {
    N, S, W, E, SE, SW, NW, NE, NULL 
    } 

Wartosc NULL nie ma zwiazku z nullem wiem glupio nazwane bede musial to zmienic

tabelaPol to

   public class Pole
    {
        char litera;
        boolean zajeta;
        
        public Pole (char litera)
        {
            this.litera = litera;
            if(this.litera=='!')
                this.zajeta = true;
            else 
                this.zajeta = false;
        }
    } 

koniecWyrazu = 0
kierunek = E
wyraz="allozaur"
tabelaPol[i][j+1] = 'l'
kolejneLitery = 1

while(koniecWyrazu == 0)    //zgadza sie wchodzi do instrukcji while
            {
                switch (kierunek)   //kierunek = E
                {
                    case N:          // casy wszystkie bardzo do siebie podobne poza elsem (rozne zmiany
                       ...              // na indeksach tablicy) dlatego je usunolem
                        break;
                    case S:
                        ...
                        break;
                    case W:
                      ...
                        break;
                    case E:
                        if(tabelaPol[i][j+1].litera==wyraz.charAt(kolejneLitery)) //'l'='l' zgada sie 
                                                //wchodzi do instrukcji powinien wejsc do kolejnego ifa
                            if(kolejneLitery==wyraz.length()-1)//ominac go bo tu juz sie nie zgadza 
                            {                                            //1!=7
                                koniecWyrazu = 2;
                                tabelaPol[i][j+1].zajeta=true;
                            }
                            else
                            {
                                j++;
                            }
                        break;                        //i przejsc do tego breaka
                    case NE:                        // natomiast nie wiem jakim cudem
                      ...                              //przechodzi do ostatniego
                        break;                    // breaka przy wartosci kierunku = NULL
                    case NW:
                      ...
                        break;
                    case SE:
                       ...
                        break;
                    case SW:
                       ...
                        break;
                    case NULL:
                        koniecWyrazu = 1;//pomija te czesc (bogole nie powinien wchodzic do tego bloku)
                        break;//wykonuje tego breaka i wraca do wykonywania whila (i sie zapetla)
                }
            }

W całości przedstawiony problem:

kierunek=E wiec powinien przejsc do tego casa: sprawdzic tabelaPol[i][j+1].litera==wyraz.charAt(kolejneLitery) (zgadza sie bo 'l'='l') i przejsc do kolejnego ifa, natomiast zamiast tego przeskakuje go całkowicie i wykonuje ostatnią instrukcje break w tym switchu (te przy wartosci kierunku NULL

Gdzie popełniam błąd?

0

Jaką wartość ma zmienna E? Napisz

kierunek = Kierunek.E;

i sprawdź zachowanie programu.

0

E to nie zmienna tylko wartość

Urso2 napisał(a):

public enum Kierunek
{
N, S, W, E, SE, SW, NW, NE, NULL
}


 
rozwiązałem już problem poprzez obejście switcha :P niestety wciąż nie wiem czemu to przeskakiwało
0

Odpalałeś program w debuggerze?

0

tak z tąd wiem z kąd dokąd przeskakuje i co omija nie wiem tylko czemu.

opisalem wszystko w komentarzach
wartosci elementow podalem przed kodem

0

Najlepiej gdybyś podał kompilujący się kod, w którym występuje problem.

0

Niestety juz go nie mam bo tak jak mowilem zamienilem calosc nie uzywajac switcha. Program rozwiazujacy wykreslanki dziala bez zazutu juz :P
Dzieki wszystkicm za pomoc

0

Mój kompilator nie zgadza się na taki kod:

    public enum Kierunek
    {
        N, S, W, E, SE, SW, NW, NE, NULL; 
    } 
    ....
    Kierunek kierunek = E;

Dlatego pytam czym jest E po prawej stronie ostatniego przypisania.

0

Podając:
koniecWyrazu = 0
kierunek = E
wyraz="allozaur"
tabelaPol[i][j+1] = 'l'
kolejneLitery = 1

nie podawałem kodu tylko wartosci poczatkowe przy tej petli
czyli kierunek ma wartosc E
w kodzie tak jak napisales
kierunek = Kierunek.E

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