【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
java switch case string
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 = "九";
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;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。