【Java】用java打印中文九九乘法表
在练习java基础的时候,想到了一个经典的案例九九乘法表,随后于是敲下了如下代码:
package jiujiuchengfabiao;
public class convert {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+j*i+" ");
}
System.out.print("\n");
}
}
}
输出结果是:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
随后就想到了打印汉字版的九九乘法表:
一一得一
二一得二 二二得四
三一得三 三二得六 三三得九
四一得四 四二得八 四三一十二 四四一十六
五一得五 五二一十 五三一十五 五四二十 五五二十五
六一得六 六二一十二 六三一十八 六四二十四 六五三十 六六三十六
七一得七 七二一十四 七三二十一 七四二十八 七五三十五 七六四十二 七七四十九
八一得八 八二一十六 八三二十四 八四三十二 八五四十 八六四十八 八七五十六 八八六十四
九一得九 九二一十八 九三二十七 九四三十六 九五四十五 九六五十四 九七六十三 九八七十二 九九八十一
接着就开始了吧啦吧啦吧啦……
打了一个错误的代码,还被老师拿出来当案例……
求此刻我的心里阴影面积……
随后我花好长时间,重新写了代码;
用了方法的调用,大大减少代码的行数;于是乎有了第二个版本:
package jiujiuchengfabiao;
public class jiujiuchengfabiao {
public static void main(String[] args) {
for (int num_1 = 1; num_1 <= 9; num_1++) {
for (int num_2 = 1; num_2 <= num_1; num_2++) {
System.out.print(convert(num_1) + convert((int) num_2));
if (num_1 * num_2 < 10) {
System.out.print("得");
System.out.print(result(num_1 * num_2) + " ");
} else {
System.out.print(result(num_1 * num_2) + " ");
}
}
System.out.println("\n");
}
}
public static String result(int j) {// 定义多位转换
String jj = "";
int bit = 1;// 定义位数
for (int i = 1; j >= Math.pow(10, i); i++) {// 判断输入数字位数
bit++;
}
String text = j + "";
for (int bit_1 = 0; bit_1 < bit; bit_1++) {
j = Integer.parseInt(text.substring(bit_1, bit_1 + 1));
jj = jj + convert(j);
}
return jj;
}
public static String convert(int i) { // 定义单位转换
String ii = "";
switch (i) {
case 0:
break;
case 1:
ii = "一";
break;
case 2:
ii = "二";
break;
case 3:
ii = "三";
break;
case 4:
ii = "四";
break;
case 5:
ii = "五";
break;
case 6:
ii = "六";
break;
case 7:
ii = "七";
break;
case 8:
ii = "八";
break;
case 9:
ii = "九";
break;
default:
ii = "出错";
}
return ii;
}
}
他的输出已经很不错了:
一一得一
二一得二 二二得四
三一得三 三二得六 三三得九
四一得四 四二得八 四三一二 四四一六
五一得五 五二一 五三一五 五四二 五五二五
六一得六 六二一二 六三一八 六四二四 六五三 六六三六
七一得七 七二一四 七三二一 七四二八 七五三五 七六四二 七七四九
八一得八 八二一六 八三二四 八四三二 八五四 八六四八 八七五六 八八六四
九一得九 九二一八 九三二七 九四三六 九五四五 九六五四 九七六三 九八七二 九九八一
但是我不满足这样;
于是乎我添加了一个新的方法:
private static String addition(int bit_1) { // 定义加位,当然这里的东西太多了
String ii = "";
switch (bit_1) {
case 0:
ii = "十";
break;
case 1:
ii = "十";
break;
case 2:
ii = "百";
break;
case 3:
ii = "千";
break;
case 4:
ii = "万";
break;
case 5:
ii = "十万";
break;
case 6:
ii = "百万";
break;
case 7:
ii = "千万";
break;
case 8:
ii = "亿";
break;
default:
ii = "出错";
}
return ii;
}
和调用他的:
if (bit_1 >= 1) { // 判断是否需要加位
jj = jj + addition(bit_1);
}
于是乎输出:
一一得一
一二得二 二二得四
一三得三 二三得六 三三得九
一四得四 二四得八 三四一十二 四四一十六
一五得五 二五一十 三五一十五 四五二十 五五二十五
一六得六 二六一十二 三六一十八 四六二十四 五六三十 六六三十六
一七得七 二七一十四 三七二十一 四七二十八 五七三十五 六七四十二 七七四十九
一八得八 二八一十六 三八二十四 四八三十二 五八四十 六八四十八 七八五十六 八八六十四
一九得九 二九一十八 三九二十七 四九三十六 五九四十五 六九五十四 七九六十三 八九七十二 九九八十一
达到了最初的目的,他的代码是:
/**
* 九九乘法表
* by Emue
*/
package jiujiuchengfabiao;
public class jiujiuchengfabiao {
public static void main(String[] args) {
for (int num_1 = 1; num_1 <= 9; num_1++) {
for (int num_2 = 1; num_2 <= num_1; num_2++) {
System.out.print(convert(num_2) + convert((int) num_1));
if (num_1 * num_2 < 10) {
System.out.print("得");
System.out.print(result(num_1 * num_2) + " ");
} else {
System.out.print(result(num_1 * num_2) + " ");
}
}
System.out.println("\n");
}
}
public static String result(int j) {// 定义多位转换
String jj = "";
int bit = 1;// 定义位数
for (int i = 1; j >= Math.pow(10, i); i++) {// 判断输入数字位数
bit++;
}
String text = j + "";
for (int bit_1 = 0; bit_1 < bit; bit_1++) {
if (bit_1 >= 1) { // 判断是否需要加位
jj = jj + addition(bit_1);
}
j = Integer.parseInt(text.substring(bit_1, bit_1 + 1));
jj = jj + convert(j);
}
return jj;
}
private static String addition(int bit_1) { // 定义加位
String ii = "";
switch (bit_1) {
case 0:
ii = "十";
break;
case 1:
ii = "十";
break;
case 2:
ii = "百";
break;
case 3:
ii = "千";
break;
case 4:
ii = "万";
break;
case 5:
ii = "十万";
break;
case 6:
ii = "百万";
break;
case 7:
ii = "千万";
break;
case 8:
ii = "亿";
break;
default:
ii = "出错";
}
return ii;
}
public static String convert(int i) { // 定义单位转换
String ii = "";
switch (i) {
case 0:
break;
case 1:
ii = "一";
break;
case 2:
ii = "二";
break;
case 3:
ii = "三";
break;
case 4:
ii = "四";
break;
case 5:
ii = "五";
break;
case 6:
ii = "六";
break;
case 7:
ii = "七";
break;
case 8:
ii = "八";
break;
case 9:
ii = "九";
break;
default:
ii = "出错";
}
return ii;
}
}
于是一份九九乘法表出来了;