我需要创建一个网格,用户输入列和行中的星号数量,到目前为止,我有这个:
import java.util.Scanner;
public class Grid {
public void run(){
Scanner scan = new Scanner(System.in);
System.out.println("Enter the grid width (1-9):" );
double num = scan.nextDouble();
System.out.println("Enter the grid length (1-9)");
double numLength = scan.nextDouble();
for(int i = 0; i < num; i++){
for(int j = 0; j < numLength; j++){
System.out.print("*");
}
System.out.println("");
但我不知道如何将字符'X'插入网格的(0,0),左上角或如何使其移动甚至让它循环。用户必须将“向上”“向下”“向左”和“向右”放入以便移动,我对如何在java中使用x和y坐标感到非常困惑。
答案 0 :(得分:0)
System.out
简单的输出流。您无法在那里为文本设置动画,也无法在命令行上注册方向键。
您需要一个GUI。这不是最好的,但请研究Swing。
更麻烦的方法是通过命令行重复循环并从用户输入获取输入:
Scanner scan = new Scanner(System.in);
System.out.println("Enter the grid width (1-9):" );
int w = scan.nextInt();
System.out.println("Enter the grid length (1-9):");
int h = scan.nextInt();
int x = 0, y = 0;
while (true)
{
for(int i = 0; i < w; i++){
for(int j = 0; j < h; j++){
if (i != x || j != y)
System.out.print("*");
else
System.out.print("X");
}
System.out.println("");
}
System.out.println("Enter direction (u,d,l,r):");
char c = scan.next().charAt(0);
switch (c)
{
case 'u': x = Math.max(0, x-1); break;
case 'd': x = Math.min(w-1, x+1); break;
case 'l': y = Math.max(0, y-1); break;
case 'r': y = Math.min(h-1, y+1); break;
case 'x': System.out.println("Exiting..."); System.exit(0);
}
}