You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用数组实现九九乘法表时输出全为81的问题咨询

九九乘法表数组实现输出异常问题

问题背景

以下非数组版本的九九乘法表代码可正常输出2~9对应的所有正确计算结果:

public class Gugudan_array {
    public static void main(String[] args) {

        for(int i = 2; i<10; i++) {
            for(int j = 1; j<10; j++) {
                System.out.println(i * j);
            }
            System.out.println();
        }
        
    }
}

改用数组实现时编写的代码如下,运行后所有输出结果均为81,需要定位编写错误:

public class Gugudan_array {
    public static void main(String[] args) {

        int[] result = new int[10];
            for(int h = 0; h < result.length; h++) {
                for(int i = 2; i < 10; i++) {
                    for(int j = 1; j<10; j++) {
                        result[h] = (i * j);
                        }
                }
            }
            for(int a = 0; a < result.length; a++) {
                System.out.println(result[a]);
            }
    }
}

错误原因

  • 数组长度定义不符合存储需求:29共8个被乘数,每个需要和19共9个乘数计算乘积,总计72个结果,当前定义的数组长度仅为10,无法容纳全部计算值。
  • 循环嵌套逻辑完全错位:你将数组下标遍历放在了最外层,意味着对数组的每一个存储位置,都会完整执行一遍i从2到9、j从1到9的全量乘法计算,每次新算出的乘积都会覆盖该位置之前存的旧值。对任意一个数组位置,最后一次执行赋值时i=9、j=9,计算结果为9*9=81,因此所有位置最终留存的值都是81。
  • 未设置和计算同步的数组下标:你没有单独维护随乘积计算移动的数组存储游标,所有计算结果都反复写入当前固定的result[h]位置,无法按顺序留存不同的乘积。

修正参考代码

public class Gugudan_array {
    public static void main(String[] args) {
        // 按总结果数定义数组长度
        int[] result = new int[8 * 9];
        int index = 0; // 单独维护数组存储下标,每存一个值后移一位
        for(int i = 2; i < 10; i++) {
            for(int j = 1; j < 10; j++) {
                result[index] = i * j;
                index++;
            }
        }
        // 遍历输出结果
        for(int a = 0; a < result.length; a++) {
            System.out.println(result[a]);
        }
    }
}

内容的提问来源于stack exchange,提问作者user19438904

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 15:39:25