Java控制结构

程序控制结构

顺序控制

程序语句从上到下的执行顺序。(变量必须先定义再使用)

分支控制(if-else)

1、单分支

if(age >=18){
			System.out.println("成年人需要为自己的行为负责!");
		}
		else
		{
			System.out.println("遵纪守法!");
		}

2、多分支

if(i%4 == 0 && i%100 != 0){
				{System.out.println(i+"年是闰年");}
		}
		else if(i%400==0){
			System.out.println(i+"年是闰年");
		}
		else{
			System.out.println(i+"年不是闰年");
		}

3、嵌套分支(最好不超过3层)
实例:做一个票价查询系统:

import java.util.Scanner;
public class IfExersice{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		System.out.print("请输入您要查询的月份:");
		int month = scanner.nextInt();
		if(month >=1 && month <=12){
			if(month >=4 &&month<=10){
				System.out.println("请输入您的年龄:");
				int age = scanner.nextInt();
				if(age > 0 && age < 18){
					System.out.println("票价为30元");
				}
				else if(age >=18 && age<=60){
					System.out.println("票价为60元");
				}
				else{
					System.out.println("票价为20元");
				}
			}
			else{
				System.out.println("请输入您的年龄:");
				int age = scanner.nextInt();
				if(age >=18 && age<=60){
					System.out.println("票价为40元");
				}
				else{
					System.out.println("票价为20元");
				}
			}
		}
	    else
	    {
	    	System.out.println("您输入的月份有误,请重新输入!");
	    }
	}
}

分支控制(switch)

在这里插入图片描述

注意事项:

1、表达式数据类型和常量数据类型必须一致,或者可以自动转换成可以比较的类型。
2、表达式返回值必须是[byte,short,int,String,char,enum[枚举]];
3、case中的值必须是常量;
4、default子句可以自行选择加或者不加;
5、如果没有break语句,会无视case直接执行下一个执行语句,遇到break跳出。
6、如果判断的具体数据类型不多,可以考虑使用switch;如果是区间判断,或者对结果的boolean类型的判断,使用if语句。

循环控制(for)

在这里插入图片描述
for( ; ; ){执行语句;break;}死循环,通过break退出。循环迭代也可以允许多个变量迭代:for(int i=1,j=1;i<x;i++,j++);

注意事项:

1、编程思想很重要,拿到题目后,首先要化繁为简,然后要先死后活,也就是先定义常量,后考虑变量,而且其中固定的值也可以使用一个变量来代替,方便题目需求的更改。
2、判断完循环条件之后,再执行循环代码,最后执行循环变量的迭代。

循环控制(while和dowhile)

while

和for循环一样有四要素,只是位置不一样。
在这里插入图片描述
作业:1、找1-100里面可以被3整除的数;2、找40-200里面的偶数。
其中偶数也就是可以被2 整除的数,所以两题可以使用同一个程序。

import java.util.Scanner;//导入Scanner包
public class While01{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);//定义一个scanner的方法;
		System.out.print("请输入被除数:");
		int start=scanner.nextInt();
		System.out.print("请输入除数:");
		int j=scanner.nextInt();
		System.out.print("请输入最大值:");
		int end =scanner.nextInt();
		while(start <= end){
			if(start % j ==0){
				System.out.println(start + "能够被"+ j+"整除");
			}
			start++;
		}
	}
}

dowhile

在这里插入图片描述
所有课堂作业:

import java.util.Scanner;
public class Dowhile01{
	public static void main(String[] args){
		/*int i=1;
		do{
			if(i%3==0){
				System.out.println("i="+i);
			}
				i++;
		}while(i<=100);*/
		//课堂练习题:利用dowhile打印1-100;
		/*int i=1;
		do{
			System.out.println("i="+ i);
			i++;
		}while(i<=100);*/

		//课堂练习:打印1-100的和;
			/*int i=1;
			int sum=0;
		do{
			sum=sum+i;
			i++;
		}while(i<=100);
		System.out.println("sum="+ sum);*/

		//打印1-200之间能够被5整除但是不能被3整除的个数,总和;
		/*int i=1;
		int sum = 0,j=0;
		do{
			if(i % 5==0 && i%3 !=0){
				System.out.println("i="+ i);
				j++;
				sum=sum+i;
			}
			i++;
		}while(i <= 200);
		System.out.println("j="+j);
		System.out.println("sum ="+sum);*/

		//如果不还钱则输出aaa,还钱则退出执行命令;
		Scanner scanner = new Scanner(System.in);
		char answer = ' ';
		do{
			System.out.println("aaa");
			System.out.println("还不还?");
			answer = scanner.next().charAt(0);

		}while(answer != 'y');
		System.out.println("程序结束");
	}
}
注意事项:

1、for和while是先判断后执行,不符合条件就退出;而dowhile是先执行后判断,至少执行一次,不符合条件就退出。

多层循环控制

循环程序执行步骤:

  1. 外层循环条件初始化;
  2. 外层循环条件判断;
  3. 内层循环条件初始化;
  4. 内层循环条件判断;
  5. 内层循环代码块执行;
  6. 内层循环变量迭代;
  7. 内层结束循环;
  8. 外层循环变量迭代;
  9. 重复3-8;
  10. 外层循环结束。
注意事项:

1、只有内层循环结束才能开始外层循环;

课后习题:

1、一共3个班,每个班5个人,成绩从键盘输入;统计每个班的成绩总分,统计3个班的所有成绩总和。

import java.util.Scanner;
public class MulFor01{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int sum1 = 0;
		int sum = 0;
		for(int i=1;i<=3;i++){
			for(int j=1;j<=5;j++){
				System.out.println("请输入第" + i +"个班第"+ j+"个学生的成绩");
				int grade = scanner.nextInt();
				sum1 +=grade;
			}
			System.out.println("第"+i + "个班的成绩总分为"+ sum1);
			sum +=sum1;
			sum1 = 0;
		}
		System.out.println("3个班的成绩总分为"+ sum);
	}
}

课后作业:打造空心金字塔以及空心菱形

//打印空心金字塔
/*老师代码
for(int i=1;i<=num;i++){
			for(int k=1;k<=num-i;k++){
				System.out.print(" ");
			}
			for(int j=1;j<=i*2-1;j++){
				if(j==1 || j==i*2-1 || i==num){
				    System.out.print("*");
			    }
			    else{
			    	System.out.print(" ");
			    }
			}
			System.out.print("\n");
		}
		*/
import java.util.Scanner;
public class MulFor03{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		for(int i=1;i<=num;i++){
			if(i ==1 || i==num){
			    for(int k=num;k>=i;k--){
				    System.out.print(" ");
			    }
			    for(int j=1;j<=i;j++){
				    System.out.print("*");
			    }
			    for(int m=2;m<=i;m++){
				    System.out.print("*");
			    }
			    System.out.print("\n");
		    }
		    else{
		    	 for(int k=num;k>=i;k--){
				    System.out.print(" ");
			    }
			    for(int j=1;j<=i;j++){
			    	if(j==1){
				        System.out.print("*");
				    }
				    else{
				    	 System.out.print(" ");
				    }
			    }
			    for(int m=2;m<=i;m++){
			    	if(m != i){
			    		System.out.print(" ");
			    	}
			    	else{
				    System.out.print("*");
				    }
			    }
			    System.out.print("\n");
		    }
		}
	}
}
//打印空心菱形
/*思路分析:
1、先打印一个矩形:
*****
*****
*****
*****
*****
2、打印半个金字塔
*
**
***
****
*****
3、打印整个金子塔
    *     //第一行:1个 层数*2-1  空格 4个=5-1(层数)
   ***    //第二行:3个 2*2-1     空格 3个=5-2(层数)
  *****   //第三行:5个 3*2-1     空格 2个=5-3(层数)
 *******  //第四行:7个 4*2-1     空格 1个=5-4(层数)
********* //第五行:9个 5*2-1     空格 0个=5-5(层数)
第一行个数
4、打印空心金字塔:空格正常,但是*号只有第一行和最后一行正常
5、菱形
    *     //第一行:1个 层数*2-1  空格 4个=5-1(层数)
   ***    //第二行:3个 2*2-1     空格 3个=5-2(层数)
  *****   //第三行:5个 3*2-1     空格 2个=5-3(层数)
 *******  //第四行:7个 4*2-1     空格 1个=5-4(层数)
********* //第五行:9个 5*2-1     空格 0个=5-5(层数)
 *******  //第六行:7个 4*2-1     空格 1个=5-4(层数)
  *****   //第七行:5个 3*2-1     空格 2个=5-3(层数)
   ***    //第七行:3个 2*2-1     空格 3个=5-2(层数)
    *     //第七行:1个 1*2-1     空格 4个=5-11||(层数)
 */
import java.util.Scanner;
public class Stars{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		for(int i=1;i<=num;i++){
			for(int k=1;k<=num-i;k++){
				System.out.print(" ");
			}
			for(int j=1;j<=i*2-1;j++){
				if(j==1 || j==i*2-1 ){
				    System.out.print("*");
			    }
			    else{
			    	System.out.print(" ");
			    }
			}
			System.out.print("\n");
		}
		for(int a=num-1;a>=1;a--){
			for(int j=1;j<=num-a;j++)
			{
				System.out.print(" ");
			}
			for(int i=1;i<=a*2-1;i++){
				if(i==1 ||i==a*2-1){
				   System.out.print("*");
			    }
			    else{
			    	System.out.print(" ");
			    }
			}
			System.out.println("");
		}
	}
}

控制结构作业

1、while+break

在这里插入图片描述

public class Three01{
	public static void main(String[] args){
		int sum = 100000;
		int i=0;
		while(true){
			if(sum > 50000){
				sum = sum -(int)(sum*0.05);
				i++;
			}
			else if( sum >=1000 && sum <=50000){
				sum =sum -1000;
				i++;
			}
			else{
				break;
			}
		}
		System.out.println("该人一共可以经过" + i+ "次路口。");
		System.out.println("该人还剩" + sum+ "元");
	}
}

2、if-else

在这里插入图片描述

import java.util.Scanner;
public class Three02{
	public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        int x = scanner.nextInt();
        if(x > 0){
        	System.out.println("输入的数大于0");
        }
        else if(x < 0){
        	System.out.println("输入的数小于0");
        }
        else{
        	System.out.println("输入的数等于0");
        }
	}
}
import java.util.Scanner;
public class Three03{
	public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        int x = scanner.nextInt();
        if(x%4 == 0 || x%100==0){
        	System.out.println("是闰年。");
        }
        else{
        	System.out.println("不是闰年。");
        }
    }
}
import java.util.Scanner;
public class Three04{
	public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        int x = scanner.nextInt();
        if(Math.pow(x/100,3) + Math.pow(x/10%10,3) + Math.pow(x%10,3) == x){
        	System.out.println("是水仙花数");
        }
        else
        {
        	System.out.println("不是水仙花数");
        }
    }
}

3、for循环

在这里插入图片描述

import java.util.Scanner;
public class Three06{
	public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        int x = scanner.nextInt();
        int j=0;
        for(int i=1;i<=x;i++){
        	if(i%5  != 0){
        		System.out.print(i+ " ");
        		j++;
        		if(j % 5 ==0){
        		System.out.println();
        	    }
        	}
        	
        }
    }
}
public class Three08{
	public static void main(String[] args){
		double sum = 0;
		for(int i=1;i<=100;i++){
			if(i%2 != 0){
				sum = sum + 1.0/i;
			}
			else
			{
				sum = sum - 1.0/i;
			}
		}
		System.out.println(sum);
	}
}
public class Three09{
	public static void main(String[] args){
		int sum =0;
		for(int i=1;i<=100;i++){
			for(int j=1;j<=i;j++){
				sum =sum + j;
			}
		}
		System.out.println(sum);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值