我目前正在尝试编写一个绘制正方形的程序。
用户将按顺序输入网格上正方形的左下角的大小(在边的长度中),x坐标和y坐标作为要编程的命令行参数。

因此输入“运行Question2Square 5 1 1”
画一个边长为5的正方形,其左下角在位置(1,1)。

我花了几个小时试图使轴正确显示。我什至没有在广场上。

我当前拥有的代码是这样,但这是错误的:

import java.util.Scanner;

public class Question2square {
  public static void main(String[] args) {
    // Axis variables
    int yAxismin = 0;
    int yAxismax = 15;
    int xAxismin = 0;
    int xAxismax = 15;

    //Loop through all coordinates on plane using for loops
    for(int y = yAxismin; y >= yAxismin; y++)
    {
      for(int x = xAxismin; x >= xAxismin; x++)
      {
        //Draw the axis
        if (Axis(x,y) != "") {
          System.out.print(Axis (x,y));
        }
      }
      System.out.println("");
    }
  }
  // This method draws the 15x15 axis
  public static String Axis(int x, int y)
  {
    // Each if and else if statement dictates what symbol needs to go where for the axes
    // If there is nothing to be drawn, there will simply be a blank space
    if (x == 15 && y== 0) return ">";
    else if(x == 0 && y == 15) return "^";
    else if (x == 0 && y == 0 )return ".";
    else if(x == 0 && y >= 0) return "|";
    else if(x >= 0 && y==0) return "-";
    else return "";
  }
}


所有这些操作都是运行一个无限循环“-”,我不知道到底是什么问题。
另外,如果输入的输入大于15x15轴,则需要弄清楚如何向任一方向延伸轴。

如果有人可以指导我,我将不胜感激。我不是要为我完成它。我真的很想弄明白这一点,但我现在有些困惑,非常沮丧。

在此先感谢您的帮助!

最佳答案

大概您想从yAxismin循环到yAxismax(和x一样)?尝试

for(int y = yAxismin; y <= yAxismax; y++)
{
  for(int x = xAxismin; x <= xAxismax; x++)
  {


有了它,循环for(int y = yAxismin; y >= yAxismin; y++)将持续很长时间。如表达式所示:“从yAxismin开始;在y大于yAxismin时循环;在每次迭代中将一个添加到y。”您需要它在y到达yAxismax时停止。

另外,请勿将字符串与==!=进行比较。使用s1.equals(s2)。你在网上犯了这个错误

if (Axis(x,y) != "") {


应该是

if (!Axis(x, y).equals("")) {


要延伸轴,只需将限制传递给Axis函数:

public static String Axis(int x, int y, int maxX, int maxY)
{
    if (x == maxX && y== 0) return ">";
    else if(x == 0 && y == maxY) return "^";
    else if (x == 0 && y == 0 )return ".";
    else if(x == 0 && y >= 0) return "|";
    else if(x >= 0 && y==0) return "-";
    else return "";
}
...
// call it with
String drawThis = Axis(x, y, xAxismax, yAxismax);

09-26 15:34