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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马上都有 中级黑马   /  2014-4-15 16:13  /  1019 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/* 用控制台程序输出九九乘法表;输出结果按下图所示:
      1*1=1
      1*2=2   2*2=4
      1*3=3   2*3=6   3*3=9
       .........*/
public class Test6 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
          int twoArray[][] = new int[10][10];
                   int i,j;
           for(i=1;i<=9;i++){
                  for(j=1;j<=i;j++){
                           twoArray[j][i] =j*i;
                           System.out.print(j+"*"+i+"="+twoArray[j][i]+" ");
                  }
                  System.out.println();
                  
           }
        }
}
运行结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81


当把数组定义为: int twoArray[][] = new int[9][9]就足够了;但运行结果就没有了最后一行的结果,搞不明白,请各位高手指点。

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 宋超2356 于 2014-4-15 16:18 编辑

你这样写就足够了
  1. public class Test6 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.           int twoArray[][] = new int[9][9];
  8.                    int i,j;
  9.            for(i=0;i<9;i++){
  10.                   for(j=0;j<=i;j++){           //数组都从0开始啊,你从1开始的话自然要多一个
  11.                            twoArray[j][i] =j*i;
  12.                            System.out.print(j+"*"+i+"="+twoArray[j][i]+" ");
  13.                   }
  14.                   System.out.println();
  15.                   
  16.            }
  17.         }
  18. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
  1.         public static void main(String[] args)
  2.         {
  3.                   int twoArray[][] = new int[9][9];
  4.                    int i,j;
  5.            for(i=1;i<=9;i++){
  6.                   for(j=1;j<=i;j++){
  7.                            twoArray[j-1][i-1] =j*i;
  8.                            System.out.print(j+"*"+i+"="+twoArray[j-1][i-1]+" ");
  9.                   }
  10.                   System.out.println();
  11.                   
  12.            }
  13.         }
复制代码
数组的下标是从0开始的,你计算的结果是从第二个位置开始的,看下我的代码,把代码改成twoArray[j-1][i-1]这样就可以了

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
数组默认从0开始。 当把数组定义为: int twoArray[][] = new int[9][9];
//下面就要改成
                   int i,j;
           for(i=0;i<9;i++){
                  for(j=0;j<=i;j++){
                           twoArray[j][i] =(j+1)*(i+1);
                           System.out.print((j+1)+"*"+(i+1)+"="+twoArray[j][i]+" ");
                  }
回复 使用道具 举报
数组的角标是从0开始的,当你定义为9的时候,也就代表里面有0,1,2,3,4,5,6,7,8     这9个。
但是你的for循环却是从1开始的,直接把0跳过去了,也就编程1,2,3,4,5,6,7,8   这8个元素了,
所以才会少一个。
回复 使用道具 举报
兄弟 数组的下标是从 0 开始   你循环是从 下标 1 开始   当然最后会少一行
回复 使用道具 举报

  1. public static void main(String[] args) {
  2.         // TODO Auto-generated method stub
  3.   int twoArray[][] = new int[10][10];
  4.            int i,j;
  5.    for(i=1;i<=9;i++){//外循环控制乘法表的行数
  6.           for(j=1;j<=i;j++){//内循环控制每一行的表达式的个数
  7.                    twoArray[j][i] =j*i;
  8.                    System.out.print(j+"*"+i+"="+twoArray[j][i]+" \t");
  9.           }
  10.           System.out.println();
  11.          
  12.    }
  13. }
  14.                


  15. 你这样写是对的 ,没有错误,只要把外循环控制的开始、结束点都想明白,内循环主要是用来控制每一行的表达式的个数的,分析好了思路,嵌套循环应该米有问题
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马