为什么这个代码块没有运行?

时间:2016-11-08 13:28:57

标签: java for-loop ascii

我正在使用ASCII艺术制作钻石。是的,我知道代码超出了草率。无论如何,最后一部分没有在一个else块内运行,留下钻石未完成。 完整代码: http://pastebin.com/14HnZADe

当前输出:

http://pastebin.com/YTqKrRQe

for循环:

 for(int i = 1; i<=size; i++) {
     for(int j=1; j<=size; j++) {
         if(j<i) {
             System.out.print(" ");
         }
         else if(j==i || j>i) {
             System.out.print("*");
         } else {//this block is not executing, and I do not know why.
             for(int ki = 1; ki<=size; ki++) { // how do I fix it?
                 for(int n = size; n>=1; n--) {
                     if(j>=i) {
                         System.out.print("*");
                     } else {
                         System.out.print(" ");
                     }
                 }
             System.out.println();
             }
         }
     }
     System.out.println();
 }

2 个答案:

答案 0 :(得分:1)

在到达else区块之前,必须满足您的一个条件:

if(j<i) {
    System.out.print(" ");
}
else if(j==i || j>i) {

j小于i或大于i或等于i。您已指定所有可能的条件,因此else将永远不会执行...

答案 1 :(得分:0)

你有

if (j<i) {
    //..
} else if (j==i || j>i) {
    // ..
} else {
    // this will never happen
}

j==i || j>ij>=i相同。 else块永远不会执行,因为j总是小于i或大于或等于i。没有其他选择!