尝试为Quadrant I绘制轴,取而代之的是Quadrant IV

时间:2015-02-03 20:58:10

标签: java

目前,我正在尝试创建一个在15x15象限I(坐标平面)网格中的任意位置绘制正方形的程序。我坚持试图让轴正确显示。

这是我到目前为止的代码:

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 <= yAxismax; y++)
    {
      for(int x = xAxismin; x <= xAxismax; x++)
      {
        //Draw the axis 
        if (!Axis(x,y).equals("")) {
          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 "";    
  }  


/*  
// Method to be used to draw actual square
  public static ... drawSquare(...) {
  }
*/
}

不幸的是,它不是绘制我想要的'L'形轴,而是显示'r'形状。我正在试图弄清楚如何正确显示轴。

我试过翻转for循环,但这没有帮助。我不知道还有什么可以抑制这一点。

1 个答案:

答案 0 :(得分:2)

尝试撤消y循环:

for(int y = yAxismax; y >= yAxismin; y--) ...

当你的循环从&#34;从上到下打印到控制台的线条&#34;然后&#34;从左到右&#34;,您希望y的最大价值优先,x的最小价值优先。因此,您只需要反转y循环即可从yAxismax转到yAxismin。结果(对于3而非15的限制是:

^
|
|
.-->