Eclipse不会在我的代码中打印空格

时间:2015-04-08 16:57:02

标签: java eclipse

我的问题在于循环中心。该程序的目标是打印由用户提供的指定尺寸的星号制成的盒子,并且它工作得相当好。但是,中心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
    }
}

2 个答案:

答案 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不会发生。