我的问题在于循环中心。该程序的目标是打印由用户提供的指定尺寸的星号制成的盒子,并且它工作得相当好。但是,中心while循环不会打印空白区域。
导致这种情况的原因是什么?
import java.util.Scanner;
public class bonus {
/**
* @param args
*/
public static void main(String[] args) {
Scanner widthScan = new Scanner(System.in);
System.out.println("Enter the width: ");
int width = widthScan.nextInt();
Scanner heightScan = new Scanner(System.in);
System.out.println("Enter the height: ");
int height = heightScan.nextInt();
int resetWidth = width;
///////////////////////////////////////////////////////////opening width sandwich
while(width>=1)
{
System.out.print("*");
width--;
}
System.out.println();
///////////////////////////////////////////////////////////
int specialHeight = height-2;
int specialWidth = width-2;
while(specialHeight>=1)
{
System.out.print("*");
while(specialWidth>=1)
{
System.out.println(" ");
specialWidth--;
}
System.out.print("*");
specialHeight--;
System.out.println();
}
////////////////////////////////////////////////////////////
while(resetWidth>=1)
{
System.out.print("*");
resetWidth--;
}
////////////////////////////////////////////////////////////closing width sandwich
}
}
答案 0 :(得分:2)
此循环后:
while(width>=1)
width
显然为0或更低。
接下来你做:
int specialWidth = width-2;
所以specialWidth
为-2或更低。
然后你有:
while(specialWidth>=1)
你期望如何进入那个循环?你期待 specialWidth
是什么?我不清楚你打算如何初始化specialWidth
(可能是width
的初始值?),但这可能是值得一看的地方。
现在也是学习使用调试器的好时机,因此如果您无法通过检查,您可以逐步完成代码以确定正在进行的操作。
答案 1 :(得分:0)
你opening width sandwich
正在做一个减少width
直到零的while循环
然后你计算总是为负的specialWidth = width-2
。
你的middle while
不会发生。