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”一词打印出完美的Diamond?
答案 0 :(得分:0)
由于“SAMPLE”(6个字符)的大小,你必须缩进System.out.print(" ");
(即6个空格不是1)。
Runnable demo:http://ideone.com/JHTU6C
注意:我没有修改任何其他内容(您可能需要check if an int
exists才能使用nextInt()
)
答案 1 :(得分:0)
如果您使用“*”或任何其他字符更改“SAMPLE”,则会获得菱形。您获得了太空飞船的形状,因为您没有在printSpaces方法中放置足够的空间。空格数应该接近printWORD方法中打印的字符数。在printSpaces方法中放置5或6个空格,你会得到一些接近钻石的东西。
答案 2 :(得分:0)
按如下方式更改这些方法:
public static void printTopTriangle(int rows)
...
printSpaces(j*6);
public static void printBottomTriangle(int rows, int startSpaces)
...
printSpaces(j*6);
注意:6是常量SAMPLE