我目前正在尝试编写一个绘制正方形的程序。
用户将按顺序输入网格上正方形的左下角的大小(在边的长度中),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);