《疯狂Java讲义》——第4章 流程控制与数组

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();
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值