A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

输出 n=6 的三角数字阵
                        1        
                        2  3  
                        4  5  6
                        7  8  9  10
                        11 12 13 14 15
                        16 17 18 19 20 21
这个初级的能搞定吗?

捕获.PNG (5.06 KB, 下载次数: 39)

捕获.PNG

22 个回复

倒序浏览
应该先考虑如果你要写这么个字阵需要知道哪些条件吧?
回复 使用道具 举报
  1. import java.util.Scanner;

  2. public class Test1 {
  3.         public static void main(String[] args) {
  4.                 Scanner sc = new Scanner(System.in);
  5.                 int a = sc.nextInt();
  6.                 int sum=1;
  7.                 for(int i=1;i<=a;i++){
  8.                         for(int j=0;j<i;j++){
  9.                                 System.out.print(sum+++" ");
  10.                         }
  11.                         System.out.println();
  12.                 }
  13.         }
  14. }
复制代码
虽然我不相信你不会做,但是我还是做了一下
回复 使用道具 举报
看看~~~支持
回复 使用道具 举报
你又来水了。。。
回复 使用道具 举报
本帖最后由 shao122791159 于 2015-5-14 21:16 编辑

虽然我也不相信你不会做,但是我也跟着做了一下        void run()
        {
                int k = 1;
                for (int i=0;i<6 ;i++ )
                {
                        for (int j=0;j<=i ;j++ )
                        {
                                System.out.print(k+"\t        ");
                                k++;
                        }
                        System.out.println();
                }
        }

回复 使用道具 举报
别水别水。。。。。。。。。。。。。。。。
回复 使用道具 举报
太水了 吧 哈哈
回复 使用道具 举报
yapo 中级黑马 2015-5-14 21:27:51
9#
方法一:
           public class Test {
        public static void main(String[] args) {
               int z = 0; //定义计数器z,z就是我们要打印的数
                        for(int i =1; i <= 6;i++)//外循环控制打印的行数(6行)
                        {
                                for(int j = 1; j <= i; j++)//内循环控制没行打印个数
                                {
                                        System.out.print(++z+"\t");//z每打印一次值增加1,每行是数量是j,打印j此换行
                                }
                                System.out.println("");
                        }
                       
                }
        }



方法二:
例如:
x为行数,     f(x)为每一行的最大值
f(x)-f(x-1)=x
f(x-1)-f(x-2)=x-1
f(2)-f(1)=2
用数学叠加方法可以计算出:(x*x-x+2)/2为第x行的最小值,(x*x+x)/2为第x行的最大值

for(int x=1;x<=6;x++)  //打6行
                {
                        for (int y=(x*x-x+2)/2;y<=((x*x+x)/2);y++ ) //每行从最小值打到最大值
                        {
                                System.out.print(y+"\t");
                        }
                        System.out.println();

回复 使用道具 举报

Scanner sc = new Scanner(System.in);
                 int n, num;
                 while(sc.hasNext()){
                         n = sc.nextInt();
                         num = 1;
                         flag:
                         for(int i = 1;  ; i ++){
                                 for(int j = 0; j < i; j ++){
                                         System.out.print((num ++) + "\t");
                                         if(num > n)
                                                 break flag;
                                 }
                                 System.out.println();
                         }
                 }
回复 使用道具 举报
直接一排输出语句   简单易懂的搞定它
回复 使用道具 举报
水经验呀
回复 使用道具 举报
这个很简单好吧
回复 使用道具 举报
gaoer 中级黑马 2015-5-14 22:07:47
14#
有点水啊 ,,,,,
回复 使用道具 举报
自己好好想想
回复 使用道具 举报
在for循环外面定义一个变量,初始值为1,再利用打印三角形的原理定义两个for循环,打印这个变量,每打印一次就++一次
回复 使用道具 举报
虽然有点......但是加油啊
回复 使用道具 举报
3楼正解
回复 使用道具 举报
一点不难!有分我就告诉你!!!!
回复 使用道具 举报
0508的兄弟??????????
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马