-1

我试过这样

 for (int j = 1; j <= 4; j++) {
            for (int k = 1; k < 10; k++) {
                if (k <= j) {
                    System.out.print(k + " ");
                } else
                    break;
            }
            System.out.println();
        }

但它打印出来像

1
1 2 
1 2 3  
1 2 3 4  

这个问题是在我参加的一次采访中被问到的,我正在努力寻找解决方案..我想不出..

4

4 回答 4

2

之前初始化一个变量

int printed = 1;

并改变你的

System.out.print(k+" ");

System.out.print(printed+" ");
printed++;
于 2013-10-10T15:13:06.513 回答
1

这将做到:

   public static void main(String[] args)
    {

       int i, j, k;
       for (i = 1, j = 1; i < 11; j++)
       {
           for (k = 0; k < j; k++)
           {
               System.out.print(i++ + " ");
           }

           System.out.println();

       }
    }
于 2013-10-10T15:22:01.973 回答
0

你也可以用一些数学魔法(序列)来试试这个。

for (int j = 1; j <= 4; j++) {
    for (int k=(int) (0.5*(Math.pow(j,2)-j+2));k<=(int) (0.5*j*(j+1));k++) {
         System.out.print(k + " ");
    }
    System.out.println();
}
于 2013-10-10T16:03:03.787 回答
0

此代码将执行此操作:

int i, j, k;
for (i = 1, j = 1; i < 11; j++) {
    for (k = 0; k < j; k++)
        System.out.print(i++ + " ");
    System.out.print("\n");
}

基本上, i 控制要打印的下一个数字,而 j 控制您将在当前行中打印多少个数字。k 只是 j 的计数器。

于 2013-10-10T15:18:45.170 回答