[英]How do I make a left arrow of asterisks in Java?
我正在開發一個制作左右箭頭的程序。 它們是從從 ShapeInterface 實現的 ShapeBase 類擴展而來的。 我沒有粘貼它們,所以它看起來不會讓人不知所措。 問題是我已經找到了右箭頭(我相信),但找不到獲得左箭頭的方法。 我一直感到困惑,似乎無法理解如何去做。 任何幫助表示贊賞。 RightArrow 示例輸出
public abstract class ShapeBase implements ShapeInterface
{
private int offset;
public ShapeBase( )
{
offset = 0;
}
public ShapeBase(int theOffset)
{
offset = theOffset;
}
public abstract void drawHere( );
public void drawAt(int lineNumber)
{
for (int count = 0; count < lineNumber; count++)
System.out.println( );
drawHere( );
}
public void setOffset(int newOffset)
{
offset = newOffset;
}
public int getOffset( )
{
return offset;
}
}
public class RightArrow extends ShapeBase
{
private int tail;
private int width;
public RightArrow()
{
super();
tail = 0;
width = 0;
}
public RightArrow(int theOffset ,int tailSize, int theWidth)
{
super(theOffset);
tail = tailSize;
width = theWidth;
set(tail , width);
}
public void set(int newHeight, int newWidth)
{
tail = newHeight;
width = newWidth;
}
public void drawHere()
{
topArrowhead();
ArrowTail();
bottomArrowHead();
}
public void topArrowhead()
{
skipSpaces(getOffset());
System.out.println("*");
for(int i = 0; i<width/2; i++)
{
skipSpaces(getOffset());
System.out.print("*");
skipSpaces(i);
System.out.println("*");
}
}
// method to draw the arrow tail
public void ArrowTail()
{
for(int count=0; count<tail; count++)
{
System.out.print("*");
}
skipSpaces(tail+width);
System.out.print("*");
}
// method to draw bottom of arrowhead
public void bottomArrowHead()
{
for(int i =1;i<width/2; i--)
{
skipSpaces(getOffset());
System.out.print("*");
skipSpaces(i);
System.out.println("*");
}
skipSpaces(getOffset());
System.out.println("*");
}
private static void skipSpaces(int number)
{
for (int count=0; count< number; count++)
System.out.print(" ");
}
}
對於左箭頭類,我相信這些是唯一需要改變的方法。 我只是不知道如何
public void topArrowhead()
{
skipsSpaces(getOffset());
System.out.println("*");
for(int i = 0 i<width/2; i++)
{
skipSpaces(getOffset());
System.out.print("*");
skipSpaces(i);
System.out.println("*");
}
}
// method to draw the arrow tail
public void ArrowTail()
{
}
// method to draw bottom of arrowhead
public void bottomArrowHead()
{
}
private static void skipSpaces(int number)
{
for (int count=0; count< number; count--)
System.out.print(" ");
}
}
這是您繪制左箭頭的方式,它不使用您的方法(因為您沒有為ShapeBase
提供源),但您可以在下面看到它是如何創建的,然后可以以您自己的方式使用。
public class LeftArrow
{
private int tail=15;
private int width=7;
//Method to draw the left arrow
public void DrawArrow()
{
for(int i = 0,r=0; i<width; i++)
{
//for spaces before head
for(int j=0;j<(width/2)-r;j++)
System.out.print(" ");
for(int j=0;j<=r;j++)
{
if(j==r || j==0)
System.out.print("*");
else
System.out.print(" ");//for spaces inside head
}
if(i==width/2)//to draw tail after the mid of head
ArrowTail();
if(i<width/2)//controls the increment & decrements of spaces before head
r++;
else r--;
System.out.println();
}
}
// method to draw the arrow tail
public void ArrowTail()
{
for(int count=0; count<tail; count++)
{
System.out.print("*");
}
}
public static void main(String[] args)
{
LeftArrow Arrow = new LeftArrow();
Arrow.DrawArrow();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.