九九乘法表循环的优化
我们想得到以下格式的九九乘法表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
……
……………………………………………………9*9=81
初代码:
import java.util.Optional;
public class test_nine_nine_multi {
public static void main(String[] args) {
for(int i=1;i<10;i++){
for (int j=1;j<10;j++){
System.out.print(i+"*"+j+"="+i*j+"\t"); //行列转化前
}
//每打完9个数字 换行,第一重循环结束打印
System.out.println();
}
}
}
运行结果:
我们发现,1*n在第一列,并且不是我们想要的结构,首先要进行行列转化,将1*n的行转化到1*n列,其余同理
将输出的代码改为System.out.print(j+"*"+i+"="+i*j+"\t");//行列转化后
运行结果为:
现在我们发现有很多重复计算显示项目,不想让程序重复计算,那么优化的方法为计算到j<=i即可停止打印
优化代码如下:
public class test_nine_nine_multi {
public static void main(String[] args) {
for(int i=1;i<10;i++){
for(int j=1;j<10;j++){
//限制条件
if(j<=i){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
}
System.out.println();
}
}
}
运行结果:
继续优化:
满足条件的打印,根据去掉部分的特点,j>i的不打印,后面的都不打印,节省循环,可以直接break退出循环,只要打印列数>行数,后面就不循环了,这种方法循环次数会少一些
代码为:
public class test_nine_nine_multi1 {
public static void main(String[] args) {
for(int i=1;i<10;i++){
for(int j=1;j<10;j++){
if(j>i){
break;
}
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
或者以这样的方式优化:满足条件的打印,根据去掉部分的特点,j=i的打印结束,后面的循环停止
部分代码: if(j==i){
break;
}
运行结果: