1

我需要制作一个网格,用户在其中输入列和行中星号的数量,到目前为止我有这个:

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 坐标感到非常困惑。

4

1 回答 1

0

System.out是一个简单的输出流。您不能在那里为文本设置动画,也不能在命令行上注册方向键。

你需要一个图形用户界面。这不是最好的,但看看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);
   }
}
于 2013-02-22T07:51:08.007 回答