import java.util.Scanner ;
public class printH
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in) ;
System.out.print("Please enter the height of H: ") ;
int height = in.nextInt() ;
System.out.println();
System.out.println();
int heightThird = findThird(height);
for (int i = 0; i < heightThird; i++)
{
printTopAndBottom(heightThird);
}
for (int j = 0; j<= 1; j++)
{
printMidH(height, heightThird);
}
for (int i = 0; i < heightThird; i++)
{
printTopAndBottom(heightThird);
}
}
public static int findThird(int height3)
{
if(height3 >= 4)
{
height3 = (height3 + 2)/3 ;
}
return height3 ;
}
public static void printTopAndBottom(int spacingH)
{
String line = "";
for (int j = 0; j < spacingH; j++)
{
String currentChar = j % 2 == 0 ? "h" : " ";
for (int i = 0; i < spacingH; i++)
{
line += currentChar;
}
}
System.out.print(line + "\n");
}
public static int printMidH(int wide, int finalHeight)
{
for (int j = 0; j<= 1; j++)
{
System.out.print("h") ;
for(int i = 0; i<= wide; i++)
{
System.out.print("h") ;
}
System.out.println();
}
return wide ;
}
}
我的代码执行以下操作:得到错误输出与某些输入
1)findThird,给定的4个或更多的字母H的总高度的整数值,它舍入值到最接近3,然后计算并返回一个整数,该整数是圆整高度的三分之一
2)printTopAndBottom,它给出三分之一的圆形高度值打印h的顶部,左边,中间和右边的宽度oh的右边部分,每个都是由firdThird方法确定的H的高度的三分之一。这再次用于打印底部
3),该给定的圆形高度值打印的三分之一H的中间部分一样宽的圆形高度和一样高圆角高度的三分之一printMidH
与输入10其输出(在我的节目MIDH匹配了顶部和底部的结束只是这里不是计算器)当我输入13例如,我得到下面的输出然而
Please enter the height of H: 10
hhhh hhhh
hhhh hhhh
hhhh hhhh
hhhh hhhh
hhhhhhhhhhhh
hhhhhhhhhhhh
hhhhhhhhhhhh
hhhhhhhhhhhh
hhhh hhhh
hhhh hhhh
hhhh hhhh
hhhh hhhh
:(这看起来不正确)
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhhhhhhhhhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh
hhhhh hhhhh hhhhh