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

Java二维数组打印时,如何在元素间加字符并避免末尾多余字符?

Java 乘法练习题打印时多余'x'的解决方法

需要生成10道随机乘法练习题,格式要求为「a x b =」,但当前代码运行后每道题末尾会多出一个'x',输出变成「a x b x =」,以下是问题代码和错误输出:

原问题代码

package exercises;

public class TimeTable {
    public static void main(String[] args) {
        int[][] nums = new int[10][2];

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 2; j++) {
                nums[i][j] = (int) (Math.random() * 10);
            }
        }

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(nums[i][j] + " x ");
            }
            System.out.println("=");
        }
    }
}

错误输出

7 x 1 x =
9 x 9 x =
6 x 3 x =
0 x 6 x =
0 x 2 x =
0 x 4 x =
0 x 8 x =
8 x 5 x =
8 x 8 x =
8 x 3 x =

解决方案

方法1:用格式化输出直接拼接(最简洁)

既然每道题固定两个数字,完全不需要用内层循环打印输出,直接通过printf格式化字符串,一次性输出符合要求的格式:

package exercises;

public class TimeTable {
    public static void main(String[] args) {
        int[][] nums = new int[10][2];

        // 生成随机数
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 2; j++) {
                nums[i][j] = (int) (Math.random() * 10);
            }
        }

        // 打印练习题
        for (int i = 0; i < 10; i++) {
            System.out.printf("%d x %d =%n", nums[i][0], nums[i][1]);
        }
    }
}

方法2:判断循环位置避免多余输出

如果坚持保留内层循环打印,可以在循环中判断当前是否为最后一个元素,只在非最后元素后添加" x ":

package exercises;

public class TimeTable {
    public static void main(String[] args) {
        int[][] nums = new int[10][2];

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 2; j++) {
                nums[i][j] = (int) (Math.random() * 10);
            }
        }

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(nums[i][j]);
                // 仅当不是最后一个元素时,才打印" x "
                if (j != 1) {
                    System.out.print(" x ");
                }
            }
            System.out.println(" =");
        }
    }
}

方法3:省略二维数组直接生成打印

因为随机数只需要打印一次,不需要存储,所以可以直接在循环中生成数字并打印,简化代码:

package exercises;

public class TimeTable {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            int num1 = (int) (Math.random() * 10);
            int num2 = (int) (Math.random() * 10);
            System.out.printf("%d x %d =%n", num1, num2);
        }
    }
}

以上三种方法都能解决等号前多余'x'的问题,其中方法1和方法3代码更简洁易读,推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:47:34