用Java打印交叉模式

用Java打印交叉模式,java,printing,Java,Printing,我一直坚持做这个家庭作业 基本上,我们必须打印带有“X”字符的交叉图案,但中间位必须为空 因此,程序必须从命令行读取一个整数,在执行它之后,它应该输出一个交叉模式 大概是这样的: x x x x x x x x x x x 希望你能看到上面格式正确,基本上我不知道如何在中间添加空位。< /P> 这就是我到目前为止所做的: 公营十字架{ public static void main(String[] args) { int num = 0; for (int i = 0; i < ar

我一直坚持做这个家庭作业

基本上,我们必须打印带有“X”字符的交叉图案,但中间位必须为空

因此,程序必须从命令行读取一个整数,在执行它之后,它应该输出一个交叉模式

大概是这样的:

x
x
x
x x x x x
x
x
x

希望你能看到上面格式正确,基本上我不知道如何在中间添加空位。< /P> 这就是我到目前为止所做的:

公营十字架{

public static void main(String[] args) {
int num = 0;
for (int i = 0; i < args.length; i++) 
{
  num = Integer.parseInt(args[i]);
    drawCross(num);
}
}


public static void drawCross(int num){

 for(int i = 0; i < num; i++) 
 {
        for(int j = 0; j < num; j++) 
        {

            if((i == num / 2) || (j == num / 2)) 
                System.out.print("X ");

            else 
               System.out.print(" ");
               System.out.print(" ");

    }
    System.out.println();
        }

}
}
publicstaticvoidmain(字符串[]args){
int num=0;
对于(int i=0;i

现在,以上工作,但它打印一个正常的十字架,没有中间的差距。(另外,我猜有一种更聪明的方法来代替sysout)

他们给我们的唯一其他要求是“x”应该打印4n次,并且程序必须处理无效输入

如果你们能帮我一把,我将不胜感激!
干杯

我会在条件之间使用异或运算符,
^
。位运算符
|
&
^
也处理
布尔值

if((i == num / 2) ^ (j == num / 2)) 
这样,如果恰好有一个条件是
true
,则将打印您的
“X”

对我有效:

public static void drawCross(int num){
    for(int i = 0; i < num; i++) {
        for(int j = 0; j < num; j++){
            if((i == num / 2) || (j == num / 2)){
                if((i == (num-1) / 2) == (j == (num-1) / 2)){
                    System.out.print(" ");
                } else {
                    System.out.print("X");
                }
            } else { 
                System.out.print(" ");
            }
            System.out.print(" ");
        }
        System.out.println();
    }
}
public静态无效drawCross(int num){
for(int i=0;i
这对我很有用:

public class DrawPattern {

        public static void main(String[] args) {
            int i, j;
            int num = 7;
            for (i = 0; i < num; i++) {
                for (j = 0; j < num; j++) {
                    if (isConditionMatch(num, i, j)) {
                        System.out.print("X");
                    } else {
                        System.out.print(" ");
                    }
                }
                System.out.println();
            }

        }

        private static boolean isConditionMatch(int num, int i, int j) {
            return (i != j && (i == (num - 1) / 2 || j == (num - 1) / 2));
        }

    }

谢谢你的帮助!这确实产生了间隙,但有点偏移。是否有明显的遗漏?如果两个条件都为真,您仍然需要打印间隙。谢谢!这确实有效,但出于某种原因,只适用于奇数。你也会这样吗?你不能用偶数打印十字。如果你这样做,一边会比另一边长。哦,上帝,当然。谢谢另外,您知道如何正确显示已打印的“x”的编号吗?因为,如果我只是这样做'System.out.println(“X被打印”+2*num+“次”);'结果当然不正确。@user3520281 2*num-2。因为这个高度和宽度的长度是num,你有2n,-2来自空白点,这是他们截取的地方——1的高度和1的宽度,谢谢你们的帮助!
   X   
   X   
   X   
XXX XXX
   X   
   X   
   X