problem z pętlą if

0

Witam. Mam problem z pętlą if. Kod:

            double tmp=0.0;
            double value = 42.5;
            for(int i=0;i<=255;i++)
            {
                a:if(tabR[i] == 255 && tabG[i] == 0 && tabB[i] != 255)
                {
                    tabB[i] = (int)tmp;
                    tmp = tmp + value;
                    b:if(tabR[i] == 255 && tabG[i] == 0 && tabB[i] == 255){
                        System.out.println("?");
                        tmp = 255.0;
                    }
                }
                
                else if(tabR[i] != 0 && tabG[i] == 0 && tabB[i] == 255)
                {
                    tabR[i] = (int)tmp;
                    tmp = tmp - value;
                    if(tabR[i] == 0 && tabG[i] == 0 && tabB[i] == 255) tmp = 0.0;
                }
      }

Problem polega na tym że po pierwszych kilku poprawnych wykonaniach program wchodzi do pętli b za kazdym razem. Nawet jak warunek z pętli a nie jest spelniony (true,true,false) Nie wiem czemu tak sie dzieje? Dlaczego w ogole trafiam do pętli b ? Do else if-a nawet nie wchodzi... Help.

0

no wiesz kompilator się na pewno nie myli!

0

wchodzi do tej pętli bo tabB przyjmuję wartość 255 po kilu iteracjach; innego wyjścia nie ma!

0

wpisz sobie w tej pętli co ci wchodzi tak: System.out.println( tabB[i] ) ;

0

tabB[i] = (int)tmp;
tmp = tmp + value; chodzi o to że w pętli zwiększasz warość tmp którego rzutujesz na int i zapisujesz w tabB[i]...

0

wow dzięki ! jesteście najlepszymi programistami na świecie ? ;)

drukuje mi
255 0 0
255 0 42
255 0 85
255 0 x
255 0 x
255 0 x
255 0 255
i potem cały czas
255 0 255
? (System.out z if-a b)
do konca
czyli w kazdym kroku wchodzi do if-a b nie wiem czemu

0

Skoro nie wiemy co jest w tych tablicach to jak mamy ci pomóc?

0
Wibowit napisał(a)

Skoro nie wiemy co jest w tych tablicach to jak mamy ci pomóc?

Jeżeli nie umiesz czytać postów które są nad Twoimi to na pewno mi nie pomożesz.

0

@pracus no ale my naprawdę nie wiemy jakie wartosci masz w tych tablicach na początku...to skąd mamy wiedzieć co się dzieje? Nawet nie znamy tematyki ...

0
            for(int x=0;x<=255;x++)
            {
                tabR[x] = 255;
                tabG[x] = 0;
                tabB[x] = 0;
            }

Heh........... widze gdzie jest błąd :) No nic muszę poprawić mój algorytm

0

Podoba mi się to sformułowanie: "pętla if". Chyba nazwę tak psa.

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