Java初学者之流程控制

流程控制

1、顺序结构

 class  TestSortStruc
{
	public static void main(String[] args) 
	{
		int i=12;
		int j=i+1;
		System.out.println(j);
	}
}  

2、分支结构(if-else;switch-case)
If-else语句:
格式:三种
执行if-else语句时,一定会选择其中的一个路径执行,而且也仅会选择一条路径。
1、 条件判断之间可以嵌套
2、 一、如果多个条件之间是“互斥”关系,多个条件语句上下顺序是自由的。
二、如果多个条件之间存在“包含”关系,要求范围小的写在范围大的上面

class  TestSortStruc
{
	public static void main(String[] args) 
	{
		int age=20;
		if(age>18){

			System.out.println("你老大不小了");

		}else{

		System.out.println("你还年轻");

			}


			if(age>130||age<0){
				System.out.println("你估计不是人");
				}else if(age<30){
					System.out.println("人家只有"+age+"岁");
					}
					else{
						System.out.println("哈哈,你妹的");

					}		

	}
}

!新知识java输入语句

//1.导包
import java.util.Scanner;
class TestScanner 
{
	public static void main(String[] args) 
	{
		//2.创建一个Scanner类的对象
		Scanner s=new Scanner(System.in);
		System.out.println("请输入一个字符串");
		//3.调用此对象的相应的方法,完成键盘输入的值的获取
		 // next():表示从键盘获取一个字符串
		String str=s.next();
		System.out.println("请输入整数:");
		int a=s.nextInt();
		System.out.println(str);
		System.out.println(a);

	}
}		

switch…case:

/*
switch(变量值){
	case 值1;

	case 值2:

	case 值3:

	default:

}

1.根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case的相应语句。如果没有break或者已经到结尾的话,会继续执行其下的case语句。
2.default:是可选的,而且位置是灵活的。
3.变量可以是哪些类型?char byte short int 枚举 String
4.case 条件:其中条件只能是值,不能是取值范围

*/
class	TestSwitch1	 
{
	public static void main(String[] args) 
	{
		int i=2;
		switch(i){
			case 0:
				System.out.println("zero");
			break;
			case 1:
				System.out.println("one");
			break;
			case 2:
				System.out.println("two");
			break;
			case 3:
				System.out.println("three");
			break;
			default:
				System.out.println("Hello World!");
			break;
	             }
	}
}

当多个case语句处理的语句块一致时,可以统一来书写。
一定情况下switch-case与if-else之间可以相互转换。
如果判断的条件不多时,优先使用switch-case.
如果使用范围条件判断,使用if-else.

Eg:判断日期为一年中的第几天
import java.util.Scanner;
class Date 
{
	public static void main(String[] args) 
	{
		Scanner s =new Scanner(System.in);
		System.out.println("请输入年份:");
		int year =s.nextInt();
		System.out.println("请输入月份:");
		int month =s.nextInt();
		System.out.println("请输入日期:");
		int day =s.nextInt();
		int sum= 0;//用来记录month月day日
		//使用switch-case
		switch(month){
			case 12:
				sum +=30;
			case 11:
				sum +=31;
			case 10:
				sum +=30;
			case 9:
				sum +=31;
			case 8:
				sum +=31;
			case 7:
				sum +=30;
			case 6:
				sum +=31;
			case 5:
				sum +=30;
			case 4:
				sum +=31;
			case 3:
				if((year % 4==0 && year % 100 !=0)||year % 400==0){
				sum +=29;
			}else{
				sum +=28;
			}
			case 2:
				sum +=31;
			case 1:
				sum +=day;
			}
			System.out.println("这个月份为这一年第几天:");
			System.out.println(sum);
	}
}

3、 循环结构(while;do…while;for( ; ; ))
一、for循环
/*
1、初始化条件
2.循环条件
3、迭代条件
4、循环体
for循环结构:
1.格式:
for(1;2;3){
//4
}
2.执行过程:1-2-4-3-2-4-3-…-4-3-2
即直至循环条件不满足,退出当前的循环

 //题目:输出100以内的所有偶数及所有偶数的和(累加的思想)及偶数的个数
	int sum=0;//用来记录所有偶数的和
	int count=0;
	for(int i=1;i<=100;i++){//100以内的自然数的遍历
		if(i%2==0){
			System.out.println(i);
			sum +=i;
			count++;
		}
	  }
	  System.out.println("总和为:"+ sum);
	  System.out.println("100以内偶数的个数为:"+ count);
	}
}

Eg:水仙花数:
class ShuiXianHua 
{
	public static void main(String[] args) {
		for(int i=100;i<1000;i++){//实现100--999的遍历
			int j1=i/100;//百位
			int j2=(i-j1*100)/10;//十位
			int j3=i%10;//个位
			if(i==j1*j1*j1+j2*j2*j2+j3*j3*j3){
				System.out.println(i);
			}
		}
	}
}

二、while循环
/*
1、初始化条件
2.循环条件
3、迭代条件
4、循环体
1.格式:
1
while(2){
4
3

}
2.for循环与while可以相互转换

*/
class TestWhile 
{
	public static void main(String[] args) 
	{
		//100以内的偶数的输出,及其和
		int i=1;
		int sum=0;
		while(i<=100){
			if(i%2==0){
		System.out.println(i);
		sum +=i;
		}
		i++;
		}
		System.out.println(sum);
		
	}
}

三、do-while循环
/*
1、初始化条件
2.循环条件
3、迭代条件
4、循环体
1.格式:
1
do{
4
3
}while(2)
2.do-while与while的区别:do-while循环至少会执行一次!

class  TestDoWhile
{
	public static void main(String[] args) 
	{
		int i=1;
		do{
			if(i%2==0){
				System.out.println(i);

			}
			i++;
		}while(i<100);


		//do-while与while的区别
		int j=10;
		do{
			System.out.println(j);
			j++;
		}while(j<10);//10


		while(j<10){
			System.out.println(j);
			j++;
		}//无结果
	}

}
四、无限循环问题
/*
输入个数不确定的整数,并判断输入的正数和负数的个数,输入0时终止

无限循环
for( ; ; ){
}
或者
while(true){
}
说明:一般情况下,在无限循环内部要有程序终止的语句,使用break实现。若没有,那就是死循环。

import java.util.Scanner;
class	TestExer 
{
	public static void main(String[] args) 
	{
		Scanner s=new Scanner(System.in);
		int a=0;//记录正数的个数
		int b=0;//记录负数的个数
		//for(;;){
		while(true){
		System.out.println("请输入一个整数:");
		int num=s.nextInt();
		if(num>0)
			a++;
		else if(num<0)
			b++;
			else
				break;
		}
		System.out.println("正数的个数为:" + a);
		System.out.println("负数的个数为:" + b);
	}
}

五、嵌套循环
/*
嵌套循环:循环中还可以声明循环。相当于内层循环的整体充当外层循环的循环体
for( ; ; ){
for( ; ; ){
}
}
或者
while(){
for( ; ; ){
}
}

class  TestForFor
{
	/*
	*****
	*****
	*****
	*****
	*/
	public static void main(String[] args) 
	{
		for(int j=0;j<4;j++){//外层循环控制行数
			for(int i=0;i<5;i++){//内层循环控制列数
				System.out.print("*");
			}
			System.out.println();
		}

		/*
		*
		**
		***
		****
		*/
		for(int j=0;j<4;j++){//外层循环控制行数
			for(int i=0;i<j+1;i++){//内层循环每行输出j+1个
				System.out.print("*");
			}
			System.out.println();
		}

		/*
		*****
		****
		***
		**
		*
		*/
		for(int i=0;i<5;i++){
			for(int j=0;j<5-i;j++){
				System.out.print("*");
			}
			System.out.println();
		}

		/*
		打印如下图形
		上半部分:
		 ----*
		 ---* *
		 --* * *
		 -* * * *
		 * * * * *
		 i   k-  j*  k=4-i  j=i+1
		 0   4   1
		 1   3   2
		 2   2   3
		 3   1   4
		 4   0   5
		 下半部分:
		 -* * * *
		 --* * *
		 ---* *
		 ----*
		 i   k-   j*    k=i+1   j=4-i
		 0   1    4
		 1   2    3
		 2   3    2
		 3   4    1
		*/


		//上半部分:
		for(int i=0;i<5;i++){
			for(int k=0;k<4-i;k++){
				System.out.print("-");
			}
			for(int j=0;j<i+1;j++){
				System.out.print("* ");
			}
			System.out.println();
		}
		//下半部分:
		for(int i=0;i<4;i++){
			for(int k=0;k<i+1;k++){
				System.out.print("-");
			}
			for(int j=0;j<4-i;j++){
				System.out.print("* ");
			}
			System.out.println();
		}
	}
}

六、for循环之打印乘法表
/*
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4

9 * 1 = 9 … 9 * 9 = 81

*/

class  TestJiuJiu
{
	public static void main(String[] args) 
	{
		for(int i=1;i<=9;i++){//一共有9行
			for(int j=1;j<=i;j++){//每行有i个等式
		System.out.print(i +"*"+j+"="+i*j+"\t");
	}
	System.out.println();
		}
	}
}

七、for循环之提高效率输出质数

/*
100以内的所有质数
加上break和Math.sqrt()可以提高运行效率
*/
class TestPrimeNumber 
{
	public static void main(String[] args) 
	{
		boolean flag=false;
		long start=System.currentTimeMillis();//获取系统当前的毫秒数
		for(int i=2;i<=100;i++){//实现100以内的自然数的遍历
			//判断i是否为一个质数
			for(int j=2;j<= Math.sqrt(i);j++){
				if(i%j==0){
					flag=true;
					break;
				}
			}
			if(!flag){//if(flag==false)
		        System.out.println(i);
			}
			flag=false;
			}
			long end=System.currentTimeMillis();
			System.out.println("所花费的时间为:" + (end - start));
			//35535--加上break:10059--使用Math.sqrt():3115

	}
}
/*
break和continue中标签的使用
*/
class TestPrimeNumber1 
{
	public static void main(String[] args) 
	{
		long start=System.currentTimeMillis();//获取系统当前的毫秒数
		1:for(int i=2;i<=100000;i++){//实现100以内的自然数的遍历
			//判断i是否为一个质数
			for(int j=2;j<= Math.sqrt(i);j++){
				if(i%j==0){
					continue 1;
				}
			}
		        System.out.println(i);
			}
			long end=System.currentTimeMillis();
			System.out.println("所花费的时间为:" + (end - start));
 	      }
     }
}

八、for循环之输出完数

/*
输出1000以内的所有完数
*/
class TestWanShu 
{
	public static void main(String[] args) 
	{
		int factor=0;
		for(int i=1;i<=1000;i++){
			//每执行完一次如下的循环,就会将i的所有的因子累加到factor中
			for(int j=1;j<i;j++){
				if(i%j==0){
					factor +=j;
				}
			}
			if(i==factor){
		System.out.println(i);
			}
		factor=0;
		}
	}
}

九、break和continue关键字的使用
/*
break:使用在switch-case中或者循环中
如果使用在循环中,表示:结束当前循环

continue:使用在循环结构中
表示:结束当次循环

关于break和continue中标签的使用(了解)
label:for( ; ; ){
for( ; ; ){
break label;
continue label;
}
}

class TestBreakContinue 
{
	public static void main(String[] args) 
	{
		/*for(int i=1;i<=10;i++){
			if(i%4==0){
				//break;//跳出当前循环
				continue;//跳出当次循环
				//在break和continue语句之后不能添加其他语句,应为永远也不可能执行!
			}
		System.out.println(i);
	}
	*/
	label:for(int i=1;i<5;i++){
		for(int j=1;j<=10;j++){
			if(j%4==0){
				//break;
				//continue;
				//break label;
				continue label;
			}
			System.out.print(j);
		}
		System.out.println();
       }
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值