黑马程序员____流程控制

 

----------------------android培训java培训、期待与您交流! ----------------------

       

 

      Java支持if语句、if…else语句、switch语句以及条件表达式运算符“?:”。

例1 条件语句的使用.

      下面的程序将首先产生0到99的随机整数,然后,利用条件语句来对他们进行分类。

         

public class Ex0104
{
	public static void main(String[] args)
	{
		int n = (int)Math.round(100*Math.random());
		System.out.println("n = " + n);
		if(n>25&&n<75) System.out.println(n + " is between 25 and 27");
		else System.out.println(n +  " is not between 25 and 27");
		switch((int)n/20)
		{
			case 0: System.out.println(n + " <20");
			case 1: System.out.println(n + " <40");
			case 2: System.out.println(n + " <60"); break;
			case 3: System.out.println(n + " <80"); break;
			default: System.out.println(n + " >=80"); break;
		}
		System.out.println(n+(n%2>0?" is odd":" is even"));
	}
}

该程序的输出为:

         注意,在case为0和case为1的两个条件语句中都省略了break语句,这样,程序将顺序执行,一直到case为2的条件语句为止。在结果中,我们可以看到这3个输出语句的输出结果。对语句n%2>0? "is  odd":”iseven” 而言,表达的语义是:当条件部分n%2>0为真时(也就是n不能为2整除),该语句的返回结果为”is  oddd”,否则返回结果为”iseven”。

Java支持while语句、do…while语句以及for循环语句。

例2 循环语句的使用

         下面的程序将从经验和尝试的角度来验证高斯(Guass)的素数定理,该定理可表述为:如p(n)表示小于n的素数的个数,则比值p(n)(ln n )/n 随n的增大而趋向于1.0。

         在程序中,奇数n的取值范围从3到1000000,对每个n,将计算出p(n)。 随着p(n)的增加,我们在它达到5000的倍数时进行输出,打印出相应的n、p(n)、ln n(自然对数)以及比值p(n)(ln n)/n,可以看到,它趋向于1.0。

         在程序中,奇数n的取值范围从3到1000000,对每个n,将计算出p(n)。随着P(n)的增加,我们在它达到5000的倍数时进行输出,打印出相应的n 、p(n)、ln(n)(自然对数)以及比值p(n)(ln n)/n,可以看到,它趋向于1.0。

class Ex0105
{
	public static void main(String [] args)
	{
		System.out.println("n\tp(n)\tln(n)\t\t\tp(n)*ln(n)/n");
		final String DASHES18 = "\t------------------";
		System.out.println("-----\t-----"+DASHES18+DASHES18);
		int p=1;//p为小于n的素数的个数。
		for (int n=3;n<1000000 ;n+=2 )
		{
			int d = 3;
			while(d<=Math.sqrt(n)&&n%d>0)
				d +=2;
			if(n%d==0) continue;
			++p;
			if(p%5000>0) continue;
			double ln = Math.log(n);
			System.out.println(n+"\t"+p+"\t"+ln+"\t"+p*ln/n);
		}
		System.out.println("-----\t-----"+DASHES18+DASHES18);
	}
}


        在程序中,for循环重复执行了499999次,分别对应3,5,7,9…999999中的每一个值。循环体对n进行测试,看能否被d=3,5,9,...      等数所整除,如果能整除(即n%d的余数为零),则第一个continue语句将被执行并重复执行下一个for循环。当n不能为上述各数整除时,表明n 是一个素数,这样计数器p加1 。

         Java支持子程序,这些子程序称为方法。                  

例3 方法的使用

       下面这个程序与例2的输出结果是一样的,但它使用了一个单独的方法来判断某个整数n是否为素数。

class Ex0106
{
	public static void main(String [] args)
	{
		System.out.println("n\tp(n)\tln(n)\t\t\tp(n)*ln(n)/n");
		final String DASHES18 = "\t------------------";
		System.out.println("-----\t-----"+DASHES18+DASHES18);
		int p=1;//p为小于n的素数的个数。
		for (int n=3;n<1000000 ;n+=2 )
			if(isPrime(n))
			{
				++p;
				if(p%5000>0) continue;
				double ln = Math.log(n);
				System.out.println(n+"\t"+p+"\t"+ln+"\t"+p*ln/n);
			}
			
		System.out.println("-----\t-----"+DASHES18+DASHES18);
	}
	private static boolean isPrime(int n)
	{
		int d=3;
		while(d<=Math.sqrt(n)&&n%d>0)
			d += 2;
		if(n%d==0) return false;
		return true;
	}
}

        程序中的isPrime()方法封装了判断n是否为素数的代码。当n能被某个整数所整除时,就返回false,表明它不是素数。反之,找不到能整除n的整数时,返回ture,表明它是一个素数。

        值得指出的是,该方法被声明为private static ,这是有特别的含义的,声明为private 意味着它将不为该类之外的其他类所使用,而说明为static则是由于它将被同样是static的main()方法所调用。   




---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima


    




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值