用Java打印交叉模式
我一直坚持做这个家庭作业 基本上,我们必须打印带有“X”字符的交叉图案,但中间位必须为空 因此,程序必须从命令行读取一个整数,在执行它之后,它应该输出一个交叉模式 大概是这样的:用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
希望你能看到上面格式正确,基本上我不知道如何在中间添加空位。< /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