学习java第三天

第三天整理

一.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循环的执行过程

  1. 执行循环体,循环体执行完后,转向2
  2. 判断循环条件,如果条件为true,则转向1;如果条件为false,则转向3
  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先判断后执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值