平时九九乘法表大多数都是使用嵌套循环,最近碰到一个需要一个循环,不允许嵌套循环的:
public class jiujiu {
public static void main(String[] args) {
multable();
System.out.println("--------------------------------------");
multable2();
}
static void multable()
{
//使用双重循环,实现99乘法表
int i, j;//定义i,j两个变量
// 口诀:外层循环控制行,内层循环控制列
for (i = 1; i <= 9; i++)//外层循环,给i赋初始值,并且确定99乘法表,有9行
{
for (j = 1; j <= i; j++)//内层循环,给j赋初值,每一行有多少列由行确定,第一行有一列,第二行有两列,由此推出j<=i
{
System.out.print(i+" * "+j+" = "+j*i+" ");
}
System.out.println("\n");
}
}
static void multable2()
{
/*
思路:
1.把内层循环中的列与外层循环写到一起,改成一个for循环
1.1内层循环中的表达式1与外层循环的表达式1写到一起(即同时给i,j赋初值);
1.2内层的循环次数j由外层循环次数i决定,因此,内层的循环条件判断放到外层的循环体内
1.3由于只有一个for循环,所以内层循环变量j和外层循环i变量需要写到循环体中
*/
int i, j;//定义i,j
for (i = 1, j = 1; i <= 9; ) {//i控制行,j控制列,省略表达式3;
System.out.print(i+" * "+j+" = "+j*i+" ");//先打印
j++;
if (j>i) {//当j>i的时候,说明改换行了,i++,并且j也应该重置
System.out.println("\n");
i++;
j = 1;
}
}
}
}
运行如下: