用Java打印交叉模式

时间:2014-04-10 17:15:52

标签: java printing

我已经完成了这项功课,我坚持了下来。

基本上我们必须打印带有'X'字符的交叉模式,但中间位必须为空。

因此,程序必须从命令行读取一个整数,并在执行它之后输出一个十字图案。

这样的事情: x x x x x x x x x x x x

希望你能在上面看到它的格式正确,基本上我不知道如何在中间添加那个空位。

这是我到目前为止所做的: public class Cross {

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();
        }

}
}

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(); } } }

现在,上面的内容有效,但它打印出一个正常的十字架,中间没有间隙。 (另外,我猜这是一种更聪明的方法,而不是使用sysout)

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

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

3 个答案:

答案 0 :(得分:4)

我会在条件之间使用XOR运算符^。按位运算符|&^也适用于boolean

if((i == num / 2) ^ (j == num / 2)) 

这样,如果完全其中一个条件是true,那么您的"X "将被打印。

答案 1 :(得分:1)

为我工作:

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();
    }
}

答案 2 :(得分:0)

这对我有用:

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   
   X   
   X   
XXX XXX
   X   
   X   
   X