Ponowne wykonanie pętli po zmianie warunku

0

Czy istnieje jakiś sposób, aby na końcu wykonywania pętli zmienić jej wyrażenie początkowe i warunek, a następnie zmusić do ponownego wykonywania się? Próbowałem jak poniżej, ale taki sposób nie działa.

public class Test
{ 
	int cyfraPoczatkowa, cyfraKoncowa;

    public static void main(String[] args)
    {
    	Test test = new Test();
        test.wykonaj();
    }    
    
    public void wykonaj()
    {
       cyfraPoczatkowa = 1;
       cyfraKoncowa = cyfraPoczatkowa + 9;

       for (int i=cyfraPoczatkowa; i<(cyfraKoncowa+1); i++)
       {
    	   System.out.println("i: " + i);
    	   if (i==cyfraKoncowa)
    	   {
    		   cyfraPoczatkowa = cyfraPoczatkowa + 10;
    		   continue;
    	   }
       }
    }
}
0

Twój kod nie zadziała, ponieważ licznikiem pętli jest zmienna "i", a w warunku wykonania jest zmienna "cyfraKoncowa", a Ty modyfikujesz zmienną "cyfraPoczatkowa". Pętla for jest przeznaczona do wykonywania kodu określoną ilość razy. Jeżeli warunki wykonania pętli nie są znane z góry i zależą od zmiennych, to IMHO powinno się używać pętli while zamiast for, ale od biedy dasz radę użyć do tego celu pętli for.

0

Modyfikowałem wyłącznie zmienną cyfraPoczatkowa, bo przed pętlą zadeklarowałem: cyfraKoncowa = cyfraPoczatkowa + 9. Wydawało mi się, że w ten sposób też powinno zadziałać. Zadziałało dopiero, gdy podobnie zadeklarowałem w warunku pętli.

public class Test
{ 
	int cyfraPoczatkowa, cyfraKoncowa;

    public static void main(String[] args)
    {
    	Test test = new Test();
        test.wykonaj();
    }    
    
    public void wykonaj()
    {
       cyfraPoczatkowa = 1;

       for (int i=cyfraPoczatkowa; i<((cyfraKoncowa = cyfraPoczatkowa+9)+1); i++)
       {
    	   if (i == 100)
    	   {
    		   break;
    	   }
    	   else if (i==cyfraKoncowa)
    	   {
    		   cyfraPoczatkowa = cyfraPoczatkowa + 10;
    		   continue;
    	   }
       }
    }
}

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