0
import java.util.Scanner;
public class Ideone
{

    public static void main(String[] args) 
    {
        int reader;
        Scanner kBoard = new Scanner(System.in);
        do
        {
            System.out.println("Insert a number of rows: ");

                reader = kBoard.nextInt();
                printDiamond(reader); 


        }while(reader != 0);

    }

    public static void printWORD(int n)
    {
        if(n >= 1)
        {
          System.out.print("SAMPLE");
            printWORD(n - 1);
        }
    }

    public static void printTopTriangle(int rows)
    {
        int x = 1;
        for(int j = (rows - 1); j >= 0; j--,x +=2)
        {
            printSpaces(j);
            printWORD(x);
            System.out.print("\n");
        }
    }

    public static void printSpaces(int n)
    {
        if(n >= 1)
        {
            System.out.print(" ");
            printSpaces(n - 1);
        }
    }

    public static void printBottomTriangle(int rows, int startSpaces)
    {
        int x = 1 + (2*(rows - 1));
        for(int j = startSpaces; j <= (rows) && x > 0; j++,x -=2)
        {
            printSpaces(j);
            printWORD(x);
            System.out.print("\n");
        }
    }
    public static void printBottomTriangle(int rows)
    {
        int x = 1 + (2*(rows - 1));
        for(int j = 0; j <= (rows - 1) && x > 0; j++,x -=2)
        {
            printSpaces(j);
            printWORD(x);
            System.out.print("\n");
        }
    }

    public static void printDiamond(int rows)
    {
        printTopTriangle((int)rows/2 + 1);
        printBottomTriangle((int)rows/2, 1);
    }
}

私のプログラムは、「SAMPLE」という単語から作られた菱形を表示することになっています。しかし、実行すると、宇宙船の形が表示されます。このエラーを修正して、「SAMPLE」という単語で完璧なダイヤモンドを印刷するにはどうすればよいですか?

4

3 に答える 3

0

これらのメソッドを次のように変更します。

public static void printTopTriangle(int rows)
   ...
   printSpaces(j*6);



public static void printBottomTriangle(int rows, int startSpaces)
   ...
   printSpaces(j*6);

注: 6 は定数の長さです。SAMPLE

于 2014-12-08T16:16:39.270 に答える