流程控制语句和方法

控制语句分为三类:顺序、选择、循环

if单选择结构

Math类的使用

  1. java.lang包中的Math类提供了一些用于数学计算的方法。
  2. Math.random()该方法用于产生一个0到1区间的double类型的随机数,但是不包括1.

/**
 * 测试If单选择结构
 * @author PengHao
 *
 */
public class TestIf {
	public static void main(String[] args) {
		//通过掷三个骰子看看今天的手气如何?
		int i = (int)(6*Math.random())+1;//通过Math.random()产生随机数
		int j = (int)(6*Math.random())+1;
		int k = (int)(6*Math.random())+1;
		int count = i + j + k;
		//如果三个骰子之和大于15,则手气不错
		if(count>15) {
			System.out.println("今天手气不错");
		}
		//如果三个骰子之和在10到15之间,则手气一般
		if(count>=10 && count <= 15) {
			System.out.println("今天手气很一般");
		}
		//如果三个骰子之和小于10,则手气不怎么样
		if(count < 10) {
			System.out.println("今天手气不怎么样");
		}
		System.out.println("得了"+count+"分");
	}
}

IfElse双选择结构


/**
 * 测试IfElse双选择结构
 * @author PengHao
 *
 */
public class TestIfElse {
	public static void main(String[] args) {
		//随机产生一个[0.0,4.0)区间的半径,并根据半径求圆的面积和周长
		double r = 4*Math.random();
		//Math.pow(r,2)求半径r的平方
		double area = Math.PI*Math.pow(r,2);
		double circle = 2*Math.PI*r;
		System.out.println("半径为:" +r);
		System.out.println("面积为:" +area);
		System.out.println("周长为:" +circle);
		//如果面积大于等于周长,则输出“面积大于等于周长”,否则,输出周长大于面积
		if(area >= circle) {
			System.out.println("面积大于等于周长");
		}else {
			System.out.println("周长大于面积");
		}
	}
}

IfElseIfElse多选择结构

/**
 * 测试ifelseifelse多选择结构
 * @author PengHao
 *
 */
public class TestIfElseIfElse {
	public static void main(String[] args) {
		int age = (int)(100*Math.random());
		System.out.println("年龄是:"+age+"属于");
		if(age<15) {
			System.out.println("儿童,喜欢玩!");
		}else if(age<25) {
			System.out.println("青年,要学习!");
		}else if(age<45) {
			System.out.println("中年,要工作!");
		}else if(age<65) {
			System.out.println("中老年,要补考!");
		}else if(age<85) {
			System.out.println("老年,多运动!");
		}else {
			System.out.println("老寿星,古来稀!");
		}
	}
}

switch多选择结构

switch语句中case标签在JDK1.5之前必须是整数(long类型除外)或者枚举,不能是字符串,在JDK1.7之后允许使用字符串(String).

/**
 * 测试switch语句
 * @author PengHao
 *
 */
public class TestSwitch {
	public static void main(String[] args) {
		char c = 'a';
		int rand = (int)(26*Math.random());
		char c2 = (char)(c+rand);
		System.out.println(c2+":");
		switch(c2) {
		case 'a':
		case 'e':
		case 'i':
		case 'o':
		case 'u':
			System.out.println("元音");
			break;
		case 'y':
		case 'w':
			System.out.println("半元音");
			break;
		default:
			System.out.println("辅音");
		}
	}
}

while循环

/**
 * 测试While循环
 * @author PengHao
 *
 */
public class TestWhile {
	public static void main(String[] args) {
		//计算1+2+3+……+100的和
		int i = 1;
		int sum = 0;
		while(i <= 100) {
			sum += i;
			i++;
		}
		System.out.println(sum);
	}
}

do-while循环

For循环

/**
 * 测试For循环
 * @author PengHao
 *
 */
public class TestFor {
	public static void main(String[] args) {
		int sum = 0;
		for(int i=1;i<=100;i++) {
			sum += i;
		}
		System.out.println(sum);
	}
}

嵌套循环

1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5

for(int i=1;i<=5;i++) {
			for(int j=1;j<=5;j++) {
				System.out.print(i+"\t");
			}
			System.out.println();
		}

打印九九乘法表

for(int i=1;i<=9;i++) {
			for(int j=1;j<=i;j++) {
				System.out.print(j+"*"+i+"="+(j*2)+'\t');
			}
			System.out.println();
		}

Break语句

/**
 * 测试循环语句中的Break
 * @author PengHao
 *
 */
public class TestBreak {
	public static void main(String[] args) {
		int total = 0;//定义计数器
		int rand;
		while(true) {
			rand = (int)(100*Math.random()+1);
			total++;
			if(rand==88) {//当等于88时,结束循环!
				break;
			}
		}
		System.out.println("总共循环了"+total+"次");
	}
}

Continue语句

int count = 0;//定义计数器
		for(int i=100;i<=150;i++) {
			if(i%3==0) {//如果i能被3整除,则跳过本次循环
				continue;
			}
			count++;//计数器加一
			System.out.print(i+"\t");
			if(count==5) {
				System.out.println();
				count=0;
			}
		}

带标签的Break和Continue语句

//打印100-150之间的所有质数
		outer:for(int i=100;i<150;i++) {
			for(int j=2;j<i/2;j++) {
				if(i%j==0) {
					continue outer;
				}
				
			}
			System.out.println(i);
		}

方法的定义_形参_实参_返回值_语句块

方法:一段用来完成特定功能的代码片段,类似于其它语言的函数
通过对象调用普通方法


/**
 * 测试方法的基本使用
 * @author PengHao
 *
 */
public class TestMethod {
	public static void main(String[] args) {
		//通过对象调用普通方法
		TestMethod tm = new TestMethod();
		tm.print();
		int a = tm.add(30, 40, 50)+1000;
		System.out.println(a);
	}
	void print() {
		System.out.println("Hello,World");
	}
	int add(int a,int b,int c) {
		int sum = a+b+c;
		return sum;//return两个作用:1.结束方法的运行。2.返回值
	}
}

方法的重载

重载的方法,实际是完全不同的方法,只是名称相同而已
只有返回值不同,不构成重载。
只有参数名称不同,不构成重载。

/**
 * 测试方法重载
 * @author PengHao
 *
 */
public class TestOverload {
	public static void main(String[] args) {
		System.out.println(add(3,5));
		System.out.println(add(3,5,10));
		System.out.println(add(3.0,5));
		System.out.println(add(3,5.0));
	}
	/** 求和的方法*/
	public static int add(int n1,int n2) {
		int sum = n1 + n2;
		return sum;
	}
	//方法名相同,参数个数不同,构成重载
	public static int add(int n1,int n2,int n3) {
		int sum = n1 + n2 + n3;
		return sum;
	}
	//方法名相同,参数类型不同,构成重载
	public static double add(int n1,double n2) {
		double sum = n1 + n2;
		return sum;
	}
	//方法名相同,参数顺序不同,构成重载
	public static double add(double n1,int n2) {
		double sum = n1 + n2;
		return sum;
	}
	/*
	//编译错误:只有返回值不同,不构成方法的重载
	public static double add(int n1,int n2) {
		double sum = n1 + n2;
		return sum;
	}
	//编译错误:只有参数名称不同,不构成方法的重载
	public static int add(int n2,int n1) {
		int sum = n1 + n2;
		return sum;
	}
	*/
}

递归

递归必须包括两部分:

  1. 定义递归头:什么时候不调用自身方法
  2. 递归体:什么时候需要调用自身方法
/**
 * 测试递归
 * @author PengHao
 *
 */
public class TestRecursion01 {
	public static void main(String[] args) {
		System.out.printf("%d的阶乘是%s%n", 10,factorial(10));
	}
	/** 求阶乘的方法 */
	static long factorial(int n) {
		if(n==1) {
			return 1;
		}else {
			return n*factorial(n-1);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值