为什么这段代码不能打印它应该是什么?

时间:2016-07-25 10:58:22

标签: java

此代码应该绘制表格,但事实并非如此。为什么? 代码编译但不打印enything。 这是代码:

 import java.util.Arrays;

    public class Nizovi{

    public static char table[][]= new char[10][10] ;



    public static void drawTable(){
        // this should draw table   

        int k=1;
        while(k <= 30){
            System.out.print("-");
        }
        System.out.println();

        for(int i=0; i < table.length; i++){

            for(int j=0; j < table[i].length; j++){
                System.out.print("|"+ table[i][j] + "|");
            }

            System.out.println();

        }

        k=1;
        while(k <= 30){
            System.out.print("-");
        }

    }


    public static void buildTable(){
        // and this is supposed to fill it with *    
        for(char[] row: table){
            Arrays.fill(row, '*');
        }
    }

    public static void main (String[] args){

        Nizovi.buildTable();
        Nizovi.drawTable();

    }
    }

我看不出我想念的东西。这有什么不对?

4 个答案:

答案 0 :(得分:4)

你的循环说while(k <= 30)... - k怎么会达到30?没有什么能改变它。

答案 1 :(得分:2)

在while块内增加k

 while(k <= 30){
        System.out.print("-");
        k++; // add this to your loops
 }

在您的代码中,k未在循环中更新,因此它仍然是1并且总是小于或等于30k <= 30总是产生{ {1}})

被称为“无尽的循环”

通过递增true中的k引用 - 块:

来输出
while

(确保更新------------------------------ |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| |*||*||*||*||*||*||*||*||*||*| ------------------------------ - 块(因此复数))

答案 2 :(得分:0)

while循环与for循环不同。 for假设您将执行某些操作,因此可以通过执行i++部分自动增加索引。而只检查条件是否满足。因此,您应该处理条件的状态并自行增加k循环体中的计数器while

答案 3 :(得分:0)

在循环中增加k

while(k <= 30){
    System.out.print("-");
    k++;
}