问题描述
有个题让打印一个镂空的矩形我打算输出一个有4行,第一行跟第4行有5个*号,中间两行为前后各一个*组成一个镂空的矩形,但是结果却有偏差,大家可以复制下面我写的代码帮我看下,中间的两行有问题。因为本人才初学,写的代码可能很硬编,希望高手帮我改下,或者有更好的方法教我一下。不要用太难的方法,我只会FOR循环。谢谢了啊、inti=1,j,k;for(;i<=4;i++){if(i==1||i==4){for(j=1;j<=5;j++)System.out.print("*");}else{for(k=1;k<=5;k++){if(k==1||k==5){System.out.print("*");System.out.print("");}}}System.out.println();}//执行的结果成这样了:**************分不多,见谅啊。
解决方案
解决方案二:
额,我代码写的很规范的,复制后发表怎么变成这样了。。。
解决方案三:
if(k==1||k==5){System.out.print("*");}else{System.out.print("");}}
解决方案四:
。。。。。。楼上的太感谢了,这么低级的错误我都没找到。。。。
解决方案五:
for(inti=0;i<4;i++){for(intj=0;j<5;j++){if(i==0||i==3){System.out.print("*");}else{if(j==0||j==4){System.out.print("*");}else{System.out.print("");}}}System.out.println();}
算法没问题,是空格和*所占像素多少引起的,中间空的个数是3个
解决方案六:
引用1楼panettone的回复:
额,我代码写的很规范的,复制后发表怎么变成这样了。。。
CSDN发帖,你可以选用代码格式,就在字体颜色的右边
解决方案七:
引用4楼random0406的回复:
Javacodefor(inti=0;i<4;i++){for(intj=0;j<5;j++){if(i==0||i==3){System.out.print("*");}else{……
这个好点,只定义i,j就可以了
解决方案八:
for循环,自己试着多走几遍程序,顺一会就会发现问题的。
解决方案:
publicclassTEXT{publicstaticvoidmain(String[]args){finalintline=7,semi=line/2;for(inti=0,k=line*line;i<k;i++){introw=i/line;intcol=i%line;if(col==0&&i>0){System.out.println();}System.out.print(Math.abs(semi-col)>semi-Math.abs(semi-row)?'*':'');}}}
解决方案:
publicclassTEXT{publicstaticvoidmain(String[]args){finalintline=7,semi=line/2;for(inti=0,k=line*line;i<k;i++){introw=i/line;intcol=i%line;if(col==0&&i>0){System.out.println();}System.out.print(Math.abs(semi-col)>semi-Math.abs(semi-row)?'*':'');}}}
解决方案:
呵呵学习了照着做了一遍