方案一:
将外层循环中的变量i作为乘法中的第二个数值
/**
* @author 谭梦寻
* @version 1.1
* 九九乘法表 逆向思维
*/
public class Test03 {
public static void main(String[] args) {
/*
1 * 1 = 1
1 * 2 = 2
*/
// 把 i 看做第三列的数 (即第一个数)
for (int i = 1; i <= 9; i++) {
// j 小于等于 i 则输出 且当j 等于 i 时换行
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j*i + "\t");
if (i == j) {
System.out.println("");
}
}
}
}
}
方案二:
外层循环i是乘法中的第一个数值,内存循环j是乘法中的第二个数值
/**
* @author 谭梦寻
* @version 1.1
* 九九乘法表
*/
public class Test02 {
public static void main(String[] args) {
/*
1 * 1 = 1
1 * 2 = 2
*/
// 定义变量 控制行 和第一列的第一个数的值
int line = 1;
int i = 1;
// 保证第一列的数一定小于行数 行数一定小于等于9
while ( i <= line && line <= 9) {
// 第三列的数大于等于第一列的数则输出 同理 第三列的数也要小于等于9
for (int j = 1; j >= i&& j<=9; j++) {
// 当第三列的数大于第一列的数且小于等于9时 输出并让第一列的数加1
while (j>i&&j<=9) {
System.out.print(i + "*" + j + "=" + i*j + "\t");
i++;
}
System.out.print(i + "*" + j + "=" + i*j + "\t");
// 如果第一列的数等于行数 则换行 并且行数加一 第一列的数归1
if (i == line) {
line++;//3
i = 1;
System.out.println("");
}
}
}
}
}
结果:
总结:
解决这类问题,首先找规律,根据规律设置循环语句,并且找到循环结束的条件,然后开始一步步编写程序 。除了以上还有多种类似的方法,递归也能实现。