JAVA:打印菱形:下面的程序哪里有问题?

下面这个程序哪里有问题吗?
打印菱形


package sec;
import java.util.Scanner; 
 
public class Printlingxing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = 0;
//获取用户输入存入整形变量i中
        if(scan.hasNextInt()){
            i =  scan.nextInt();
        }
//判断并输出
        if(i%2==0||i==1){//注意这里为==!!i%2==0不是 2System.out.print("error");
        }
        else{
            for(int j=1;j<=i/2;j++){//若i等于3;只循环一次   //j=1;j<=4;j++
                for(int m=i/2; m>0;m--){//m=1,//m=4;m>0;m--
                    System.out.print(" ");
                }
                for(int n=1;n<=i-2;n=n+2){//n=1,n
                    System.out.print("*");
                }
                System.out.print("\n");
            }

            for(int k=1;k<=i;k++){
                System.out.print("*");
            }
            System.out.print("\n");

            for(int j=i/2;j>=1;j--){
                for(int m=1; m<=i/2; m++){
                    System.out.print(" ");
                }
                for(int n=i-2;n>=1;n=n-2){
                    System.out.print("*");
                }
                System.out.print("\n");
            }
        }
    }
}

可参考:https://blog.csdn.net/wang_yi_king/article/details/123512570

import java.util.Scanner;

public class Printlingxing {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = 0;
        //获取用户输入存入整形变量i中
        if(scan.hasNextInt()){
            i =  scan.nextInt();
        }
        //判断并输出
        if(i%2==0||i==1){//注意这里为==!!i%2==0不是 2!
            System.out.print("error");
        }
        else{
            for(int j=1;j<= i/2 + 1;j++){ // 控制上半部分的行数
                for(int m= 1; m <= i / 2 + 1 - j; m++){ // 控制空格的数量
                    System.out.print(" ");
                }
                for(int n = 1;n <= 2 * j - 1; n++){ // 控制“*”的数量
                    System.out.print("*");
                }
                System.out.print("\n");
            }

            for(int j=i/2; j >= 1; j--){ // 控制下半部分的行数
                for(int m=1; m<= i/2 + 1 - j; m++){ // 控制空格的数量
                    System.out.print(" ");
                }
                for(int n= 1; n <= 2 * j - 1; n++){
                    System.out.print("*");
                }
                System.out.print("\n");
            }
        }
    }
}