12.26笔记与作业

流程控制--选择结构与循环结构

1、流程控制结构:顺序结构、选择结构和循环结构

  1)、顺序结构:程序从上向下依次执行每条语句的结构;

  2)、选择结构:根据条件判断的结果来选择执行不同的代码;

      有if控制语句和switch语句

  3)、循环结构:根据判断条件来重复性地执行某段代码;

      有while语句、do-while语句、for语句

2、选择结构有if控制语句和switch语句

  1)、if控制语句有3种不同的形式,分别为单分支结构、双分支结构和多分支结构

    A、单分支结构:

    if(表达式){

      语句;

    }

    a、if为关键字;

    b、表达式为布尔类型的表达式,结果为true或false;

    B、双分支结构:

    if(表达式){

      语句1;

    }else{

      语句2;

    }

    执行步骤:

      对表达式进行判断,结果为true,则执行语句1;反之执行语句2;

    PS:else子句不能单独使用,必须是IF语句的一部分,与最近的if语句配对使用;else后可再进行if语句,进行多分支选择

    C、使用复杂条件的IF选结构

      结合运算符的优先级编写条件:

        a、最高的优先级:();

        b、最低的优先级:=;

        c、优先级:!>算术运算符>关系运算符>&&>||

        d、复杂条件使用括号提高可读性

 

  2)、switch语句

     A、语法格式

    switch(){

    case 常量1:

      语句;

      break;

    case 常量1:

      语句1;

      break;

    case 常量1:

      语句2;

      break;

    default:

      语句3;

    }

    注:1、switch、case、break、defaultj为JAVA关键字;  

      2、switch后的表达式只能是整型、字符型或枚举类型;

      3、case用于与表达式进行匹配;

      4、default是可选的,当其他条件都不匹配时执行default;

 

3、作业

  A、假如你准备去海南旅游,现在要订购机票。机票价格受季节旺季、淡秀影响,而且头等舱和经济舱价格也不同。假设机票原价为5000元,4~10月为旺秀,旺秀头等舱打9折, 经济舱打6折,其他月份为淡季,头等舱打5折,经济舱打4折。请编写程序,根据出行的月份和选择的舱位输出实际价格。

  

import java.util.Scanner;
//计算淡旺秀出行的机票价格
public class JiPiao {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);

		int yuanjia = 5000;
		System.out.println("请选择您要出行的月份:");
		int yuefen = cxj.nextInt();
		System.out.println("请问您需要头等舱还是经济舱?\n"+"头等舱输入1"+"\t经济舱输入2");
		System.out.print("请输入:");
		int cang = cxj.nextInt();

		if(yuefen>=4&&yuefen<=10) {
			if(cang==1) {
				System.out.println("您的机票价格为:"+yuanjia*0.9);
			}else {
				System.out.println("您的机票价格为:"+yuanjia*0.6);
			}	
		}else if(cang==1){
				System.out.println("您的机票价格为:"+yuanjia*0.5);
			}else {
				System.out.println("您的机票价格为:"+yuanjia*0.4);
			}
	}
}

  结果示例:

 

  B、赌色子游戏,三个色子赌大小

package com.java12_26;

import java.util.Scanner;
//3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18,假设三个筛子的数之和<=10为小,反之为大
public class ShaiZi_DaXiao {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		int money = 10000;
		System.out.println("请问您是否要进行开盘?y/n");
		String kaipan = cxj.next();
		if(kaipan.equals("y")) {
			int a = (int)(Math.random()*6+1);
			int b = (int)(Math.random()*6+1);
			int c = (int)(Math.random()*6+1);
			int sum = a+b+c;
			System.out.println("请您下注:");
			int xiazhu = cxj.nextInt();
			System.out.println("您压大压小?");
			String daxiao = cxj.next();
			System.out.println("开:"+a+","+b+","+c+";"+sum);
			if(sum<=10) {
				if(daxiao.equals("小")) {
					System.out.println("是小,恭喜您压对了");
					money +=xiazhu;
				}else {
					System.out.println("报歉您压错了");
					money -=xiazhu;
				}
				System.out.println("余额:"+money);
			}else {
				if(daxiao.equals("大")) {
					System.out.println("是大,恭喜您压对了");
					money +=xiazhu;
				}else {
					System.out.println("报歉您压错了");
					money -=xiazhu;
				}
				System.out.println("余额:"+money);
			}
		}else {
			System.out.println("感谢您的光顾,请慢走!");
		}
	}
}

    示例结果为:

  C、switch实现周一、三、五预习;周二、四、六复习;周七休息

import java.util.Scanner;

//1、3、5预习,2、4、6复习,7复习
public class XingQi {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		System.out.println("您想查询周几的课程?请输入:");
		int zhouji= cxj.nextInt();
		if(zhouji>=1&&zhouji<=7) {
			switch(zhouji) {
			case 1:
			case 3:
			case 5:
				System.out.println("请预习明天的课程!");
				break;
			case 2:
			case 4:
			case 6:
				System.out.println("请复习功课!");
				break;
			default:
				System.out.println("今天休息,可以放松下心情");
			}
		}else {
			System.out.println("您的输入有误!");
		}
	}
}

    示例结果:

 

 4、异常问题记录

  例:100米比赛成绩在10秒以内的可以分别进入男、女组决赛,编写程序实现。

public class JueSai {
	public static void main(String[] args) {

		int score = 8;
		String sex = null;
		if(score<10) {
			if(sex.equals("男")) {
				System.out.println("恭喜你进入男子组决赛!!");
			}else {
				System.out.println("恭喜你进入女子组决赛!!");
			}
		}else {
			System.out.println("报歉,你的成绩无法进入决赛!!");
		}
	}
}

  结果会显示空指针异常:

 

  空指针异常:java.lang.NullPointerException

 

    String sex = null;

    if(sex.equals("男“))这一句出现空指旬异常,因为sex为空

 

    出现原因:使用值为null的变量调用了方法

    解决方案:给该为null的变量赋值;或者使用不为null的变量来调用方法

    总结:在使用方法时,要用不太可能为null的变量来调用方法,可以避免空指针异常

  解决方法1:把equals左右两个操作数对换,用常来调用方法,这样if("男".equals(sex))结果为FALSE

public class JueSai {
	public static void main(String[] args) {

		int score = 8;
		String sex = null;
		if(score<10) {
			if("男".equals(sex)) {
				System.out.println("恭喜你进入男子组决赛!!");
			}else {
				System.out.println("恭喜你进入女子组决赛!!");
			}
		}else {
			System.out.println("报歉,你的成绩无法进入决赛!!");
		}
	}
}

  结果为:

  解决方法2:直接输入赋值

import java.util.Scanner;

public class JueSai {
	public static void main(String[] args) {
		Scanner cxj = new Scanner(System.in);
		System.out.println("请输入学生的跑步成绩:");
		int score = cxj.nextInt();
		System.out.println("请输入学生的性别:");
		String sex = cxj.next();
		if(score<10) {
			if(sex.equals("男")) {
				System.out.println("恭喜你进入男子组决赛!!");
			}else {
				System.out.println("恭喜你进入女子组决赛!!");
			}
		}else {
			System.out.println("报歉,你的成绩无法进入决赛!!");
		}
	}
}

  结果示例:

 

预习重点:

  1、循环的语法

     A、while循环语句语法

      变量初始化

      while(循环条件){

        循环体;

        修改循环变量;

      }

    B、do-while循环语句语法

      变量初始化

      do{

        循环体;

        修改循环变量;

      }(循环条件);

    C、for循环语句语法

      for(变量初始化;循环条件;修改循环变量){

        循环体;

      }

  2、各自的特点

     A、while循环:先判断循环条件,再执行循环体。如果条件不成立,退出循环。

    B、do-while循环:先执行循环体,再判断循环条件,循环体至少执行一次

    C、for循环:先执行变量初始化部份,再判断循环条件,然后再执行循环体,最后进行循环变量的计算。如果条件不成立,跳出循环。在循环次数确定的情况下,优先选用for循环。

  3、循环结构的几个要素

    变量初始化、循环体、循环条件、修改循环变量

 

posted on 2018-12-26 20:28  陈小锦  阅读(472)  评论(0编辑  收藏  举报