java,for语句求奇数偶数的问题?

public class tfor
{

public static void main (String []aegs){
    for (int a = 0; a <100;a++){
        if (a % 2 != 0);{

            System.out.println(a);
            a++;
        }
    }               
}

}
结果为偶数

public class tfor
{

public static void main (String []aegs){
    for (int a = 0; a <100;a++){
        if (a % 2 != 0);{
            a++;
            System.out.println(a);
        }
    }               
}

}
结果为奇数

public class tfor
{

public static void main (String []aegs){
    for (int a = 0; a <100;a++){
        if (a % 2 != 0);{

            System.out.println(a);
        }
    }               
}

}
结果为1~100

请问这段代码a++的位置不同导致结果不同,是为什么有大神能解释一下吗,笑答万分感谢

等价代码:

  for (int a = 0; a <100; ){
        {
            System.out.println(a);
            a=a+2;
        }
    }      
  for (int a = 0; a <100; ){
       {
            a=a+1;
            System.out.println(a);
            a=a+1;
        }
    }      
  for (int a = 0; a <100; ){
       {
            System.out.println(a);
            a=a+1;
        }
    }      

if (a % 2 != 0)后分号删了

你这样在IF后面加一个分号,后面的代码就和这个判断语句无关了后面代码就依次执行了。所以你的a++位置变了之后会影响结果,就是带代码从上到下依次执行的锅;
要进行奇偶的判断应该像下面代码:

 for (int a = 0; a < 100; a++) {
            if (a % 2 != 0){
                System.out.println(a);
            }
        }