java学习笔记(四)-- 实践篇

作为一种编程语言,实践动手编程是必不可少的,学习前三个方面的只是,已经有基本的能力做一些简单的编程,今天要做的俩题目都是比较有意思,然后有时候一些公司可能面试会考的,作为检测基本水平的手段。

第一题,是java的一般编程书上学完循环的时候都会有的一道题目,打印一个金字塔,基本情况如下图所示:


这是一个小的金字塔,看起来这是一个比较简单的题目,但是真要很快编出来也是一件不太容易的事情。需要考虑的东西还是很多的。代码如下:

public class TowerTest
{
	public static void main(String[] args)
	{
		//外层循环,循环的次数等于列数
		for (int i=0 ; i<7 ; i++)
		{
			//内循环打印空格,发现每行的空格数等于2*7-1-2*i,这里的星星是占两个字符的
			for (int j=0 ; j<13-2*i ; j++)
			{
				System.out.print(" ");
			}
			//打印星星,星星数是2*i+1
			for (int j=0 ; j<2*i+1 ; j++)
			{
				System.out.print("★");
			}
			System.out.println("");
		}
	}
}

第一道题还是一道比较常规的题目,即使想不到循环的办法,最笨的打印的方法还是可以实现,但是第二题就是一道不是很好实现的方法了。打印一个近似圆,结果如下图所示:


这个题目看起来就很复杂,空格的数目还怎么打,星星在哪里打印。这个问题,百度一搜有很多种方法,这里列举一种我自己写的方法:

import java.lang.Math;//引入数学库

public class RoundTest
{
	//指定半径
	final static int RADIUS = 10;

	public static void main(String[] args)
	{
		//这里需要建立坐标系,圆心选的位置为(RADIUS,RADIUS),所以最上面的y值为2倍的半径
		int x , y=2*RADIUS;
		while (y >= 0)
		{
			//求出x的坐标,列出圆的方程反解x
			x = (int)Math.round(Math.sqrt(RADIUS*RADIUS-(y-RADIUS)*(y-RADIUS)));
			for (int i=0 ; i<=RADIUS+x ;i++)
			{
				System.out.print(" ");
				//选出两点打印*
				if (i == RADIUS-x || i==RADIUS+x-1)
				{
					System.out.print("*");
				}
			}
			System.out.println("");
			y -= 2;  //这里是y减小的步长
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值