簡體   English   中英

如何在Java中制作星號的左箭頭?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM