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
相关产品推荐
相关产品推荐

