有个题让打印一个镂空的矩形
我打算输出一个有4行,第一行跟第4行有5个*号,中间两行为前后各一个*组成一个镂空的矩形,但是结果却有偏差,大家可以复制下面我写的代码帮我看下,中间的两行有问题。
因为本人才初学,写的代码可能很硬编,希望高手帮我改下,或者有更好的方法教我一下。不要用太难的方法,我只会FOR循环。谢谢了啊、int i=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();
}
//执行的结果成这样了:
*****
* *
* *
*****分不多,见谅啊。
我打算输出一个有4行,第一行跟第4行有5个*号,中间两行为前后各一个*组成一个镂空的矩形,但是结果却有偏差,大家可以复制下面我写的代码帮我看下,中间的两行有问题。
因为本人才初学,写的代码可能很硬编,希望高手帮我改下,或者有更好的方法教我一下。不要用太难的方法,我只会FOR循环。谢谢了啊、int i=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();
}
//执行的结果成这样了:
*****
* *
* *
*****分不多,见谅啊。
System.out.print("*");
}
else
{
System.out.print(" ");
}
}
for (int j = 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个
public static void main(String[] args) {
final int line = 7, semi = line / 2;
for(int i = 0, k = line * line; i < k; i++) {
int row = i / line;
int col = i % line;
if(col == 0 && i > 0) {
System.out.println();
}
System.out.print(Math.abs(semi - col) > semi - Math.abs(semi - row) ? '*' : ' ');
}
}
}
public static void main(String[] args) {
final int line = 7, semi = line / 2;
for(int i = 0, k = line * line; i < k; i++) {
int row = i / line;
int col = i % line;
if(col == 0 && i > 0) {
System.out.println();
}
System.out.print(Math.abs(semi - col) > semi - Math.abs(semi - row) ? '*' : ' ');
}
}
}