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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jialihong 中级黑马   /  2013-7-22 16:28  /  1529 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.itheima;
/* 用控制台程序输出九九乘法表;输出结果按下图所示:
      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 赞一个!

查看全部评分

8 个回复

倒序浏览
假如你定
int twoArray[][] = new int[9][9];
那么就会数字角标越界异常
你的数值 长度为9 时  你访问 数组的9 下标 ,就会显示 越界。
当前访问的数组下标为9,但是所访问的数组长度不足9;

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
因为楼主的for循环初始量是1,而且使用的数组角标也是1开始,这样就将所有的0角标为空了出来。
如果定义的数组是new int[9][9],那么数组角标为0~8,这样没有9角标位的元素,就不会找到所有使用9角标位的元素。

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
int twoArray[][] = new int[9][9];定义了一个二维数组,有九个一位数组,每一个数组长度为9。那么数组角标为0~8。取不到9.
其实做99乘法表,两个for,在输出不就好l。不用定义二维数组

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
int i,j;
                for(j=1;j<=9;j++){//外循环
                        for(i=1;i<=j;i++)//内循环
                                System.out.print(i+"*"+j+"="+i*j+"\t");  
                        System.out.println();

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
for循环里面变量的初始值是1 和 数组角标是0 相当于twoArray[0][0],twoArray[0][1],......都是空格...。
这增加左右的间距不知多大用
回复 使用道具 举报
简单的说就是for循环里里面的循环变量和数组角标不太搭配,因为for循环里i的初始值为1,而数组里的角标是从0开始的,如果for循环是这样定义的,for(i=1;i<=9;i++)那么打印的时候要减1,System.out.print(j+"*"+i+"="+twoArray[j-1][i-1]+" ")或者for循环从i,j的变量范围为从0到8。
回复 使用道具 举报
好的,各位,明白了,谢谢
回复 使用道具 举报
fufeng 中级黑马 2014-4-10 19:12:30
9#
因为int twoArray[9][9]  ,中的角标只有0-8,而且你的初始角标为1一直到9,很明显,数组中没有角标为9的。所以就显示不出来9这一行了.而且在数组中,而且角标为零的元素位置是没有操作的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马