1.使用循环输出九九乘法表。
/**
* 《疯狂Java讲义》——第4章 流程控制与数组
* 1.使用循环输出九九乘法表。
*
*/
public class TestCycle01 {
public static void main(String[] args) {
for (int i = 1 ; i < 10 ; i++) {
for (int j =1 ; j <= i ; j++) {
System.out.print(j+"x"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
2.使用循环输出等腰三角形
/**
* 《疯狂Java讲义》——第4章 流程控制与数组
* 2.使用循环输出等腰三角形。例如给定4,输出结果如下
* *
* ***
* *****
* *******
*
*/
public class TestCycle02 {
public static void main(String[] args) {
//改变m的值即可改变塔的高度
int m = 5; //m表示等腰三角形的高
int n = 1; //n表示最高层“*”个数
int o = m; //o表示空格数量,可以使等腰三角形向右平移,但最小值等于m
for (int i = 0 ; i < m ; i++) { //决定等腰三角形高度
o=o-1; //形成一个等腰三角形得益于“*”前面的空格多少,最高层前面的空格是总高度减一,且之后每层减一
int k = o;
while (k>0) { //当k=0时结束打印空格
System.out.print(" ");
k--; //每打印一个空格k值减一
}
for (int j =1 ; j <=n ; j++) { //决定每层打印多少个“*”号
System.out.print("*");
}
n = n + 2;
System.out.println(); //换行
}
}
}
3.通过API文档查询Math类的方法,利用星号“*”打印出一个下图中近似圆的一个圆环,只要给定不同半径,圆环大小也随之相应改变
/**
* 《疯狂Java讲义》——第4章 流程控制与数组
* 本章习题
* 3.通过API文档查询Math类的方法,利用星号“*”打印出一个下图中近似圆的一个圆环,只要给定不同半径,圆环大小也随之相应改变。
*
* * *
* * *
* * *
* * *
* * *
* * *
*
*
*/
/*
* 解决思路:
* 从题目中可以看出该圆环是一个关于x轴对称的图案,每一行由两个“*”组成
* 如果将这两个“*”用直线连接起来,即为该圆的其中一条弦
* 圆环的形成是由每行第一个“*”的空格数量决定的
* 所以我们只要能计算出改行弦长即可
*
*/
public class TestACircle {
public static void main(String[] args) {
int r = 5; //初始一个圆的半径
/*
* 第一个for循环,确定圆的大小
* 2*r:当循环次数达到圆的直径时结束循环
* 注意:
* 首先如果每行都进行如上判断,那么会发现输出的圆成了“椭圆”,其高度差不多是宽度的两倍,
* 故我们改变一下,每两行进行一次如上判断,可以输出一个近似圆
*/
for (int i = 0 ; i <= 2*r ; i+=2) {
int a =i; // a = 半径r减去弦心距
/* b = 二分之一弦长
* (int):强制转换数据类型为int整型数据
* Math.round(x):将x的值进行四舍五入
* Math.sqrt(x):计算x的平方根
* Math.pow(a,b):计算a的b次方
* Math.abs(x):计算x的绝对值
*/
int b =(int)Math.round(Math.sqrt(Math.pow(r, 2)-Math.pow(Math.abs(r-a), 2)));
/*
* r-b-1的值为第一个“*”前的空格
* -1的原因是“*”会占去一个单位的长度
*/
for (int j = 0; j <= r-b-1 ; j++) {
System.out.print(" ");
}
//打印完空格紧接着打印该行第一个“*”
System.out.print("*");
//循环打印弦长单位个空格
for (int j = 0; j <= 2*b ; j++) {
System.out.print(" ");
}
//打印该行第二个“*”
System.out.print("*");
//换行
System.out.println();
}
}
}