我正在尝试创建一个程序CoordinateFinder.java,该程序向用户询问介于1和5之间的两个整数值。然后,使用一对for循环生成一个2D坐标平面。该平面应为该平面上的每个坐标打印一个句点,但用户指定的坐标除外,后者应打印一个X。
我想做的事的例子:
Enter your x coordinate:
2
Enter your y coordinate:
4
5 . . . . .
4 . X . . .
3 . . . . .
2 . . . . .
1 . . . . .
0 1 2 3 4 5
我所拥有的:
import java.util.Scanner;
public class CoordinateFinder {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter an X co-ordinate from 1-5: ");
int x = input.nextInt();
System.out.println("Please enter a y co-ordinate from 1-5: ");
int y = input.nextInt();
for (int i = 5; i >= 1; i--) {
System.out.print(i +" ");
if (i == 0) {
System.out.println("\n");
System.out.println(" 5 4 3 2 1 ");
}
for (int j = 4; j >= 0; j--) {
System.out.print(" . ");
if (j == 0) {
System.out.println("\n");
}
}
}
}
}
哪个输出:
5 . . . . .
4 . . . . .
3 . . . . .
2 . . . . .
1 . . . . .
0
5 4 3 2 1
. . . . .
答案 0 :(得分:1)
在嵌套的FOR
循环中,变量i
代表您的y
值,变量j
代表您的x
值。因此,在每个i
循环中,您需要打印完整的行(y值),在每个“ j”嵌套循环中,您需要确定在每列中打印的内容(x值)。要确定是否需要打印X
或.
,您需要将i
和j
与y
和x
进行比较,就像这样:
import java.util.Scanner;
public class CoordinateFinder {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter an X co-ordinate from 1-5: ");
int x = input.nextInt();
System.out.println("Please enter a y co-ordinate from 1-5: ");
int y = input.nextInt();
System.out.println("");
for (int i = 5; i >= 1; i--) {
System.out.print(i);
for (int j = 1; j <= 5; j++) {
if (i == y && j == x) {
System.out.print(" X");
} else {
System.out.print(" .");
}
}
System.out.print("\n");
}
System.out.println("0 1 2 3 4 5");
}
}
输出:
Please enter an X co-ordinate from 1-5:
2
Please enter a y co-ordinate from 1-5:
4
5 . . . . .
4 . X . . .
3 . . . . .
2 . . . . .
1 . . . . .
0 1 2 3 4 5
请注意,我确实在子循环中反转了j
的方向,以表示在网格上从左向右遍历时递增的x值。当您遍历各行时,我减小了i
来表示递减的y值。我其余的更改都在格式化。