没有输入循环

时间:2014-01-11 00:02:01

标签: java for-loop

我还在研究我的Java Diamond问题。

这是钻石的当前状态

http://prntscr.com/2i9l9y

我认为问题是for循环就在这里, 我需要的只是打印那些空间然后我就完成了。

任何人都可以看到为什么我没有输入或运行我标记有问题的for循环的明显原因?

//Bottom half of the diamond

    int middleSpaces = sides + 2;
    int downPreSpaces = 1;
    int dRows = sides + 1;

    for (int x = 1; x <= dRows; x++) {
        if (x >= dRows) {
            for (int z = 1; z <= sides + 1; z++) {
                System.out.print(" ");
            }
            System.out.print("v");
        }

        if (x != dRows) {

            for(int y = 1; y <= x; y++) {
                System.out.print(" ");
            }

            System.out.print("\\");

        //PROBLEM IS HERE

            for (int e = middleSpaces - 2; e <= 0; e += 2) {
                System.out.print(" ");
            }

            System.out.print("/\n");
        }

4 个答案:

答案 0 :(得分:3)

使用调试器逐步执行代码,并检查导致问题的位置的变量e和dRows的状态。

答案 1 :(得分:1)

你没有递减middleSpaces它也没有正确初始化:

        int middleSpaces = sides * 2;   //NOTICE
        int downPreSpaces = 1;
        int dRows = sides + 1;    
        for (int x = 1; x <= dRows; x++) {
            if (x >= dRows) {
                for (int z = 1; z <= sides + 1; z++) {
                    System.out.print(" ");
                }
                System.out.print("v");
            }    
            if (x != dRows) {    
                for(int y = 1; y <= x; y++) {
                    System.out.print(" ");
                }    
                System.out.print("\\");    
                for (int e = middleSpaces - 2; e >= 0; e -= 1) {
                    System.out.print(" ");
                }
                middleSpaces-=2;   //NOTICE
                System.out.print("/\n");
            }

答案 2 :(得分:0)

middleSpaces - 2可能小于dRows,否则其中一个外循环不起作用。

答案 3 :(得分:0)

请注意,dRows,middleSpaces和dmSpaces的值在您显示的代码中不会更改。这意味着有问题的内循环将始终打印相同数量的空格。

您可能意味着以下内容:

for(int e = middleSpaces - 2; e >= x; e -= 2) {
    System.out.print(" ");
}

这可能是一个或一个东西,但更接近你想要获得的结果。