第三天整理
一.if ,switch
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。总的来说:写在前面的先执行,写在后面的后执行
1.Demo1
package com.hpe.java;
public class Demo01 {
/**
* 顺序结构:
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//实训的一天
System.out.println("洗漱");
System.out.println("收拾东西");
System.out.println("吃饭");
System.out.println("实训");
System.out.println("吃饭");
System.out.println("午休");
System.out.println("实训");
System.out.println("吃饭");
System.out.println("晚自习");
System.out.println("娱乐");
System.out.println("睡觉");
}
}
之前的内容,数据都是在代码中写死的,在真正的项目实践中数据值肯定是变化的,有必要学习如何输入数据。如何输入数据呢?需要三步:
导入java.util.Scanner包;
语句import java.util.Scanner;
这句话要放在class定义的上面。
创建对象;
语句 Scanner sc = new Scanner(System.in);
接收数据
int a = sc.nextInt();
String name = sc.nextLine();
2.Demo2—scanner
package com.hpe.java;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* Scanner:他是一个引用类型,接受键盘输入数据
* 引用类型 名称=new一个引用类型();
*/
Scanner sc=new Scanner(System.in);
System.out.println("请输入姓名:");
//接受变量值:定义一个变量
String name=sc.next();
System.out.println("请输入年龄:");
int age=sc.nextInt();
System.out.println("请输入金额");
double money=sc.nextDouble();
System.out.println("我叫:"+name+",我今年:"+age+"岁,我有:"+money+"元");
}
}
分支语句根据一定的条件有选择地执行或跳过特定的语句
Java分支语句分类
if语句
switch 语句
if语句
从英文单词来看,if就是如果,那么我们想想,我们现实生活中的例子,女生向你表白
if (布尔表达式)
{
代码块;
}
在执行时,判断布尔表达式的值,如果结果为true则执行下面的代码块,否则直接跳过代码块
if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略,建议永远不要省略
3.Demo3----if语句
package com.hpe.java;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* if:就是如果的意思,就是根据条件表达式进行判断,如果条件成立就执行,如果不成立就跳过
*
*
* 语法:
* if(判断条件){
* 代码块;
* }
* 执行:
* 1.首先判断条件是否成立,TRUE或false
* 2.如果是TRUE,执行if里面的代码块
* 3,如果是发了,不执行跳过if里面的代码块
*/
//如果你成年了,可以去网吧
Scanner sc =new Scanner(System.in);
System.out.println("请输入年龄:");
int age=sc.nextInt();
//判断用户输入的年龄是否大于等于18
if(age>=18){
System.out.println("可以去网吧");
}
}
}
4.Demo4—if语句
package com.hpe.java;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* if(条件判断){
* 代码块1;
* }else{
* 代码块2
* }
*
* 执行顺序
* 如果age》=18,执行if里面的代码块
* 如果age《18 ,则执行else里面的代码块
*/
//如果你成年了,可以去网吧,,否则输入:你是小学生,不可以进网吧
System.out.println("请输入年龄:");
Scanner sc=new Scanner(System.in);
//System.out.println("请输入年龄:");
int age =sc.nextInt();
if(age>=18){
System.out.println("成年了,你可以进网吧开心吗");
}else{
System.out.println("你是小学生,不可以进网吧");
}
//变成三元运算符
String result=(age>=18)?"成年了,可以进网吧":"你小学生,进啥网吧呀";
System.out.println(result);
}
}
5.Demo5
package com.hpe.java;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* if(){
* }else if{
* }else if{
* }else{
* }
*
*
* 接受用户年龄
* 如果年龄小于等于18 提示“未成年”、
* 如果年龄大于等于18 小于40“进入中年”
* 如果年龄大于等于40,小于80“进入老年人的行列”
* 如果年龄大于等于80,小于100“子孙满堂”
* 如果年龄大于等于100,小于120“其实活着还可以做更多的事”
* 否则你可能变异了
*/
Scanner sc= new Scanner(System.in);
System.out.println("请输入您的年龄:");
int age =sc.nextInt();
if(age<18){
System.out.println("您一个未成年");
}else if(age>=18 && age<40){
System.out.println("进入中年");
}else if(age>=40 && age<80){
System.out.println("进入老年人的行列");
}else if(age>=80 && age<100){
System.out.println("子孙满堂");
}else if(age>=100 && age<120){
System.out.println("其实活着还可以做更多的事");
}else{
System.out.println("你可能变异了");
}
}
}
6.Demo6
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,对它们进行排序(使用 if-else-if),并且从大到小输出。
package com.hpe.java;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//编写程序:由键盘输入三个整数分别存入变量num1.num2,num3
//对他们进行排序(使用if-else-if),并且从大到小输出
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1=sc.nextInt();
System.out.println("请输入第二个整数");
int num2=sc.nextInt();
System.out.println("请输入第三个整数");
int num3=sc.nextInt();
if(num1>num2){
if(num3>num1){//2
System.out.println(num3+","+num1+","+num2);
}else if(num3>num2){//1 3 2
System.out.println(num1+","+num3+","+num2);
}else{//1,2,3
System.out.println(num1+","+"num2"+","+num3);
}
}else{ //num1<num2
if(num1>num3){//2 1 3
System.out.println(num2+","+num1+","+num3);
}else if(num2<num3){ //3 2 1
System.out.println(num3+","+num2+","+num1);
}else{//2 3 1
System.out.println(num2+","+num3+","+num1);
}
}
}
}
switch语句
当判断条件为多种状态时,我们使用if-else-if来解决,但这不仅会使代码的编写非常繁琐,还会影响到代码的可读性
switch语句能够有效的避免这种情况所带来的冗长代码
switch语句
switch (表达式)
{
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
…
default :
代码块n;
break;
在switch语句执行时,首先计算表达式的值,然后将其与case后的常量依次进行比较,
如果找到相匹配的值,则进入到该常量下的代码块执行,直至遇到break结束整个switch语句。
如果常量中没有找到匹配值,则进入到default代码块执行。
在这里我们需要注意的是,虽然break语句不是必须的,但在执行过程中,如没有遇到break,将继续执行一下case后的代码块,直至break或整个switch语句结束
switch语句有关规则:switch(表达式)中表达式的返回值必须是下述几种类型之一:int, byte, char, short, 枚举, 字符串String(JDK7之后支持)case子句中的值必须是常量,且所有case子句中的值应是不同的;
default子句是任选的;
break语句用来在执行完一个case分支后使程序跳出switch语句块;
7.Demo7
package com.hpe.java;
import java.util.Scanner;
public class Demo07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 年底了,要发年终奖了,1000 5000 10000 20000
* 如果发了1000,老板好扣啊
* 如果发了5000,老板还可以
* 如果发了10000,老板算是大方
* 如果发了20000,老板这还差不多
* 否则输入错误
*
*
* if和switch的区别
* switch 适合用在条件是固定值的(常量),不能进行逻辑判断,根据用户输入的值直接去找
* 相应的case,效率高
* case里面需要加入break
* if适合逻辑判断(区域),每一步判断都会执行
*/
Scanner sc =new Scanner(System.in);
System.out.println("请输入年终奖:");
int money =sc.nextInt();
switch (money) {
case 1000:
System.out.println("老板好扣啊");
break;
case 5000:
System.out.println("老板还可以");
break;
case 10000:
System.out.println("老板算是大方");
break;
case 20000:
System.out.println("老板这还差不多");
break;
default:
System.out.println("你输错了大哥!");
break;
}
}
}
8.Demo8—成绩
编写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:
score>=90 等级:A
70=<score<90 等级: B
60=<score<70 等级: C
score<60 等级:D
package com.hpe.java;
import java.util.Scanner;
public class Demosai {
public static void main(String[] args) {
// TODO Auto-generated method stub
//编写程序,从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:
//score >+90 等级:A
//70=<score<90 等级:B
//60=<score<70 等级:C
//score <60 等级:D
//if 和 switch
Scanner sc=new Scanner(System.in);
System.out.println("请输入学生成绩");
int score = sc.nextInt();
// if(score>=90){
// System.out.println("等级:A");
// }else if(score<90 && score>=70){
// System.out.println("等级:B");
// }else if(score<70 && score>=60){
// System.out.println("等级:C");
// }else{
// System.out.println("等级:D");
// }
//System.exit(0);程序终止功能
if(score<0 ||score>100){
System.out.println("您输入的成绩应该在0到100之间");
}else{
switch (score/10) {
case 10:
case 9:
System.out.println("等级:A");
break;
case 8:
case 7:
System.out.println("等级:B");
break;
case 6:
System.out.println("等级:C");
break;
default:
System.out.println("等级:D");
break;
}
}
}
}
小结
if执行过程
if是选择结构,有三个形式,它们执行是条件成立只会选一个执行。
switch执行过程
一、计算
二、找case
三、从找到的case开始,往下全部执行,直到遇到break结束switch语句
四、若没找到case,则从default开始往下全部执行,若没default则结束switch语句。
二:while循环结构
do-while循环结构
循环语句也叫迭代语句,是指在循环条件满足的情况下,重复执行一组代码块,直至循环条件不再满足或都遇到跳转语句
java中用于实现循环的语句有while、do-while、for
本节课我们主要讲解while循环。
while循环的语法
while ( 条件表达式)
{
循环体;
}
注意:
当条件表达式的结果为真的时候,执行内部循环体;然后再判断条件表达式的真假。
当条件表达式的结果为假的时候,结束循环
while循环的末尾不要加分号
while循环执行过程
①判断循环条件,如果条件为true,则转向②;如果条件为false,则转向③
②执行循环体,循环体执行完后,转向①
③跳出循环,循环结束
while循环的实现
1.定义一个变量来保存执行的次数
2.写while循环
A.条件:次数小于10
B.循环体:输出abc,次数+1
3.结束循环
while循环的特点
我们看一下while循环的执行过程
先判断是否符合条件,根据判断的结果,再确定是不是执行循环体。
while循环的语法
while ( 条件表达式)
{
循环语句;
}
while()循环条件,为true时,执行循环语句;然后再进行判断,直到条件不满足就结束while()循环
1.Demo1
package demo4;
public class Demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 1.准备工作,笔墨伺候,执行一次
* 2.条件判读:在动笔之前执行,够了,就停止;不够就继续抄
* 3.抄课文:反复执行
* 4.计数器:抄完一次加1
*
*/
//抄课文
// System.out.println("抄课文,文字");//麻烦
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
// System.out.println("抄课文");
/**
* 我们可以使用循环解决以上问题、
* 什么是循环?
* 通过循环语句反复执行一段代码
*
* while循环语法:
* ①初始化
* while(②循环判断){
* ③循环体;
* ④累加器;
*
* }
*/
//抄课文10遍
//1.创建初始化变量
int num=1;
//2,设置循环条件
while(num<=10){
//3.循环体
System.out.println("抄课文"+num);
//4.累加器
num++;
}
}
}
例题
1.使用while循环方式计算2+4+6+8+…100
2.使用while循环方式打印100以内4的倍数(while中加if)
3.编写程序:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
package com.hpe.ex;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 使用while循环方式计算2+4+6+8+…100
// 使用while循环方式打印100以内4的倍数(while中加if)
// 编写程序:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
//使用while循环方式计算2+4+6+8+…100
int num=2;
//定义一个变量接受和
int sum=0;
while(num<=100){
if(num%2==0){
sum+=num;
}
num++;
}
System.out.println(sum);
System.out.println("===================");
// 使用while循环方式打印100以内4的倍数(while中加if)
int num1=4;
while(num1<100){
if(num1%4==0){
System.out.println(num1);
}
num1++;
}
System.out.println("=======================");
// 编写程序:从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
Scanner sc =new Scanner(System.in);
int num2=0;//正数
int num3=0;//负数
while(true){
System.out.println("请输入整数:");
int num4=sc.nextInt();
if(num4>0){
num2++;
}else if(num4<0){
num3++;
}else{
break;//终止循环
}
}
System.out.println("正数的个数:"+num2);
System.out.println("负数的个数:"+num3);
}
}
do-while循环的语法
do
{
循环语句;
} while ( 条件表达式);
do-while循环的执行过程
- 执行循环体,循环体执行完后,转向2
- 判断循环条件,如果条件为true,则转向1;如果条件为false,则转向3
- 跳出循环,循环结束
do-while循环的特点
先执行后判断
package com.hpe.ex;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/**
* 语法:
* ①初始化变量
* do{
* ②循环语句;
* ③累加器
* }while(④循环条件);
*
* while和do。。。while的区别:
* while 先判断再执行
* do..while先执行再判断,至少执行一次循环体
*/
//抄课文
int num=1;
do{
System.out.println("抄课文"+num);
num++;
}while(num<=10);
//使用while实现抄课文
int num1=1;
while(num1<=10){
System.out.println("抄课文"+num);
num++;
}
}
}
例题
1.计算1-100之间的和
2、使用do-while循环方式打印100以内4的倍数
3、要求用户输入用户名和密码,只要不是admin和111就提示用户名或密码不正确,请重新输入。正确时结束循环,提示登陆成功,如果错误三次退出程序
package com.hpe.ex;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 计算1-100之间的和
int num=1;
int sum=0;
do{
sum+=num;
num++;
}while(num<=100);
System.out.println(sum);
// 2、使用do-while循环方式打印100以内4的倍数
System.out.println("==========================");
int num1=4;
do{
if(num1%4==0){
System.out.println(num1);
}
num1++;
}while(num1<=100);
// 3、要求用户输入用户名和密码,只要不是admin和111就提示用户名或密码不正确,请重新输入。正确时结束循环,提示登陆成功,如果错误三次退出程序
System.out.println("======================");
Scanner sc=new Scanner(System.in);
boolean flag=true;
int count=1;
while(flag){
System.out.println("请输入用户名");
String userName=sc.next();
System.out.println("请输入密码");
String pwd=sc.next();
if(userName.equals("admin") && pwd.equals("111")){
flag=false;
System.out.println("登录成功");
}else{
if(count++<3){
System.out.println("用户名和密码不正确");
}else{
System.exit(0);
}
}
}
}
}
while与do-while的区别
do…while循环至少会执行一次循环体;
2)while循环只有在条件成立的时候才执行循环体。
也可以这样表述:do…while先执行后判断,while先判断后执行