我已经完成了这项功课,我坚持了下来。
基本上我们必须打印带有'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 次并且程序必须处理无效输入。
如果你们能帮助我,我将不胜感激! 干杯
答案 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