Scanner的引用、流程控制语句

Java键盘的录入

案例1:


import java.util.Scanner; //1.导入程序包
class  ScannerDemo{
	public static void main(String[] args) {
		//Scanner Java提供的类可以用来获取从键盘中输入的数据
		//2.创建键盘录入对象
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个整数");
		//调用该方法,录入一个整数
		int num=sc.nextInt();
		//输出这个数字
		System.out.println("你输入的数字是:"+num);
	}
}

注意:

  1. 调用Scanner时需要导入程序包;
  2. Scanner需要大写

案例2:

键盘键入两个数,求最大值:

import java.util.Scanner; //1.导入包
class ScannerDemo2{
	public static void main(String[] args) {
		//2.创建Scanner对象
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第一个整数");
		//3.录入用于输入的整数
		int one=sc.nextInt();
		System.out.println("请输入第二个整数");
		//3.录入用于输入的整数
		int two=sc.nextInt();
        int max=one>two?one:two;
		System.out.println("最大值是"+max);
	}
}

总结:利用三元结构表示比较简洁

案例三:

比较两个键入的两个整数是否相等:

import java.util.Scanner;
class  ScannerDemo3{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第一个整数");
		int num1=sc.nextInt();
		System.out.println("请输入第二个整数");
		int num2=sc.nextInt();
		//比较两个数是否相同
		//boolean b=num1==num2?true:false;
		String b=num1==num2?"相等":"不相等";
		System.out.println(b);
		

	}
}

流程控制语句

  • 含义:在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以要求我们熟悉每条语句执行顺序来完成我们需要的功能。

  • 分类:顺序结构、选择结构、循环结构

顺序结构

  • 定义:是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
  • 执行流程:由上往下依次执行

选择结构

  • 定义:顾名思义就是可以根据要求选择性的执行相应的代码。
  • 分类:if语句;switch语句。

if语句的使用

if语句的格式1
  • if(比较表达式或者是boolean类型的值) {
    语句体;
    }
  • 执行流程:
    先计算比较表达式的值,看其返回值是true还是false。
    如果是true,就执行语句体;
    如果是false,就不执行语句体;
  • 案例演示
    判断两个数据是否相等

class  IFDemo{
	public static void main(String[] args) {
		int a=100;
		int b=100;
		if((a==b)){
			System.out.println("Hello World!");

		}
	}
}

注意
条件选择语句 if:
if(要一个结果是boolean类型的表达式或者值){
/*当()里面的结果是true时就会执行{}大括号里面的语句体/
语句体

	}
if语句格式2
  • if(比较表达式) {
    语句体1;
    }else {
    语句体2;
    }
    注意事项:else后面是没有比较表达式的,只有if后面有。*
  • 执行流程:首先计算比较表达式的值,看其返回值是true还是false。
    如果是true,就执行语句体1;
    如果是false,就执行语句体2;
  • 案例
class IFDemo2 {
	public static void main(String[] args) {
		/*
		if(条件){
		  条件为真,执行这个括号里面的代码
		}else{
		  条件为假,执行这个括号里面的代码
		}
		*/
		if(10+2>5-3){
			System.out.println("这是真的");
		}else{
			System.out.println("这是假的");
		}

		

		
	}
}
if语句的格式2和三元的相互转换问题

案例
获取两个数中的最大值

import java.util.Scanner;
class  IFDemo3{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入第一个整数");
		int a=sc.nextInt();
		System.out.println("请输入第二个整数");
		int b=sc.nextInt();
		//采用if else 来做 获取两个数的最大值
		//int max=a>b?a:b;
		//获取和输出打印是两个概念
		int max;
		if(a>b){
			max=a;
		}else{
			max=b;
		}

		 System.out.println("最大值是"+max);

	}
}

结论:

  1. 三元运算符实现的,都可以采用if语句实现。反之不成立。
  2. 什么时候if语句实现不能用三元改进呢?
    当if语句控制的操作是一个输出语句的时候就不能。
  3. 为什么呢?因为三元运算符是一个运算符,运算符操作完毕就应该有一个结果,而不是一个输出。
    案例
class  IFDemo5{
	public static void main(String[] args){
		int a=100;
		int b=10;
		int c=18;
		//求三个数的最大值
		int max=0;
		/*
        if(a>b){
		  if(a>c){
			  max=a;
		  }else{
		     max=c;
		  }
		}else{
         if(b>c){
		    max=b;
		 }else{
			max=c;
			
		  }
		
		}*/

		if(a>b&&a>c){
		   max=a;
		}else if(b>a&&b>c){
		   max=b;
		}else{
		  max=c;
		}
		
		System.out.println("最大值是:"+max);
	}
}
if 语句格式3
格式:
if(比较表达式1) {
	语句体1;
}else if(比较表达式2) {
	语句体2;
}else if(比较表达式3) {
	语句体3;
}
...
else {
	语句体n+1;
}
执行流程:
首先计算比较表达式1看其返回值是true还是false,
如果是true,就执行语句体1,if语句结束。
如果是false,接着计算比较表达式2看其返回值是true还是false,

如果是true,就执行语句体2,if语句结束。
如果是false,接着计算比较表达式3看其返回值是true还是false,
...

如果都是false,就执行语句体n+1。

注意事项: 当只要有一个条件满足时,if语句结束。else是可以省略,但是不建议省略。

案例:
  1. 要求:键盘录入一个成绩,判断成绩等级
    90-100 优秀
    80-89 良
    70-79 中
    60-69 及格
    0-59 差
import java.util.Scanner;
class  IFDemo6{
	public static void main(String[] args) {
		  Scanner sc=new Scanner(System.in);
		 System.out.println("请输入你的成绩 0---100 不要数小数");
		 int score=sc.nextInt();
		 if(score>=0&&score<60){
			 System.out.println("不及格");
		 }else if(score>=60&&score<80){
			  System.out.println("差");
		 }else if(score>=80&&score<90){
			  System.out.println("中");
		 }else if(score>=90&&score<100){
			  System.out.println("优良");
		 }else if(score==100){
			  System.out.println("满分");
		 }else{
		  System.out.println("成绩不合法");
		 }

	}
}

案例二:
要求输入月份判断季节:
5. 用if语句实现下列需求:
键盘录入月份,输出对应的季节
3 4 5 春季
6 7 8 夏季
9 10 11 秋季
12 1 2 冬季

import java.util.Scanner;
class  IFDemo7{
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入 1---12 中的一个整数");
		int num=sc.nextInt();
		if(num==3||num==4||num==5){
		  System.out.println("春季");
		}else if(num==6||num==7||num==8){
		  System.out.println("夏季");
		
		}else if(num==9||num==10||num==11){
		  System.out.println("秋季");
		
		}else if(num==12||num==1||num==2){
		 System.out.println("冬季");
		}else{
			System.out.println("你乱输的");
		}

	}
}

swith case 语句的使用

语句格式

switch语句的格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;

default:
语句体n+1;
break;
}
注意

  1. 表达式的取值:byte,short,int,char;
  2. break表示中断意思,不加break会出现case贯穿现象;
  3. default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
执行流程

先计算表达式的值,然后和case后面的匹配,如果匹配成功就执行对应的语句,遇到break就会结束,否则执行default控制的语句

案例
class  SwitchDemo{
	public static void main(String[] args) {
		//Switch语句,也是一种选择语句
		
		int num=10;
          switch(num){
		           case 10:
                   System.out.println("是一个10");
				   //break;
				    case 20:
                   System.out.println("是一个20");
				  // break;
				    case 30:
                   System.out.println("是一个30");
				  // break;
				    case 40:
                   System.out.println("是一个40");
				   //break;
				    case 100:

                   System.out.println("是一个100");
				   //break;
				   default:
						 System.out.println("以上case项都没有匹配上,执行默认项里面的代码");
					break; 
				  
		  }

		   System.out.println("下来的程序");	
	}
}
case 穿透

case结束后不写break会继续执行下一个case,从而发生case穿透,可以加以利用:

  1. 键盘录入月份,输出对应的季节
    3 4 5 春季
    6 7 8 夏季
    9 10 11 秋季
    12 1 2 冬季
import java.util.Scanner;
class  SwitchDemo7zi{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请键入数字");
		int num=sc.nextInt();
          switch(num){
					
		            case 12:
                   
				    case 1:
                
				    case 2:
                   System.out.println("冬季");
				   break;
				    case 3:
               
				    case 4:
                   
				    case 5:
                   System.out.println("春季");
				   break;
				   case 6:
                  
				    case 7:
                   
				    case 8:
                   System.out.println("夏季");
				   break;
				   case 9:
                  
				    case 10:
                  
				    case 11:
                   System.out.println("秋季");
				   break;
				   default:
						 System.out.println("乱输");
					break;			  
		  }

	}
}

注意

  1. case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的;
  2. default一定要在最后吗?不是,可以在任意位置。但是建议在最后;
  3. switch语句的结束条件
    a:遇到break就结束了
    b:执行到末尾就结束了
    案例:
class  SwitchDemo2{
	public static void main(String[] args) {
		int x = 2;
	    int y = 3;
	switch(x){
		default:
			y++;
			break;
		case 3:
			y++;
		case 4:
			y++;
	}
		System.out.println("y="+y); // 4 
	}
}

最终的输出结果是y=4
案例2:

class  SwitchDemo2{
	public static void main(String[] args) {
int x = 2;
	int y = 3;
	switch(x){
		default:
			y++;
		case 3:
			y++;
		case 4:
			y++;
	}
	System.out.println("y="+y);
}

结果y=6

swith 和 if 语句区别

在做判断的时候,我们有两种选择:if语句和switch语句,那么,我们到底该如何选择使用那种语句呢?
13. if语句使用场景:
针对结果是boolean类型的判断
针对一个范围的判断
针对几个常量值的判断
14. switch语句使用场景:
针对几个常量值的判断

循环语句

for循环
for循环语句格式

for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}

执行流程
  1. 执行初始化表达式语句
  2. 执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
  3. 执行循环体语句;
  4. 执行控制条件语句
  5. 返回2继续

注意初始化语句只执行一次

  • 案例:
public class ForDemo3 {
    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            System.out.println("我爱你");
        }
    }
}

注意
* int i=0 循环的初始值
* i<100 循环是否继续的条件
* i++ 控制语句
* {}大括号里面的代码,叫做循环体,就是你要重复执行的语句

  • 循环的执行流程
    * 1.先执行初始语句 int i=1;这条语句只执行一次
    * 2.执行判断语句 i<100 如果是true 执行{}大括号里面的循环体语句
    * 3.执行控制语句 i++
    * 4.返回第2步继续执行,直到 i<10 是false 整个循环结束
利用for循环求和
  • 案例一:
    求出sum=1+2+…+100;
public class ForDemo {
    public static void main(String[] args) {
        int sum=0;
        for(int i=1;i<=100;i++){
            //sum=sum+i; //
            sum+=i;
        }
        System.out.println("结果是:"+sum);
    }
}
  • 案例二
    求1-100偶数和;奇数和;
public class ForDemo2 {
    public static void main(String[] args) {
    
        int ou=0;
        int ji=0;

        for(int i=1;i<=100;i++){
            if(i%2==0){
                ou+=i;
            }else{
                ji+=i;

            }
        }

        System.out.println("偶数和是"+ou);
        System.out.println("奇数和是"+ji);

    }
}
for 循环之水鲜花

案例:
在控制台输出所有的”水仙花数”
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 111 + 555 + 333 = 1 + 125 + 27 = 153

package org.westos.demo3;

public class ForDemo3 {
    public static void main(String[] args) {
        int count=0; //定义一个统计变量
        for(int i=100;i<=999;i++){
            int ge=i%10;
            int shi=i/10%10;
            int bai=i/100%10;
            int flowerNumber=ge*ge*ge+shi*shi*shi+bai*bai*bai;
            if(i==flowerNumber){
                System.out.println("水仙花数是: "+i);
                count++;
            }

        }

        System.out.println("水仙花数有"+count+"个");
    }
}
while 循环
语句格式
  1. while循环的基本格式:
    while(判断条件语句) {
    循环体语句;
    }
    完整格式:
    初始化条件语句;
    while(判断条件语句) {
    循环体语句;
    控制条件语句;
    }
  • 执行流程
  1. 执行初始化条件语句;
  2. 执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
  3. 执行循环体语句;
  4. 执行控制条件语句
  5. 回到2继续。
案例
package org.westos.demo4;
public class WhileDemo {
    public static void main(String[] args) {
        //请输出10句我爱你
        int i=1;
        while (i<=10){ //条件
            System.out.println("我爱你");
            i++; //控制循环的语句,不要忘了
        }
        System.out.println("--------------------------------------");
        //求1---100之间的和
        int j=1;
        int sum=0;
        while (j<=100){
            sum+=j;
            j++;
        }
        System.out.println("和是 "+sum);

    }
}
do while
语句格式

do {
循环体语句;
}while(判断条件语句);

完整格式;
	初始化条件语句;
	do {
		循环体语句;
		控制条件语句;
	}while(判断条件语句);
执行流程
  1. 执行初始化条件语句;
  2. 执行循环体语句;
  3. 执行控制条件语句;
  4. 执行判断条件语句,看其返回值是true还是false
    如果是true,就继续执行
    如果是false,就结束循环
  5. 回到2继续;
案例
package org.westos.demo4;


public class DoWhileDemo {
    public static void main(String[] args) {
        
        int i=10;
        do{
            System.out.println("你好");
            i--;
        }while (i>2);
    }
}
三种循环的区别
  1. do…while循环至少执行一次循环体。
    而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
  2. 如果你想在循环结束后,继续使用控制条件的那个变量,用while循环,否则用for循环。不知道用for循环。
    因为变量及早的从内存中消失,可以提高内存的使用效率。
循环嵌套
案例一

输出一个4行5列的星星(*)图案

package org.westos.demo5;

public class ForDemo {
    public static void main(String[] args) {
 
        //结论:外层循环控制行数,里层循环空列数
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.print("*"); //打印不换行
            }
            System.out.println(); //仅仅输出一个换行符
        }
    }
}

注意:
System.out.println("");和System.out.print("");的区别
结论:
外循环控制行数,内循环控制列数

案例二

请输出下列的形状
*
**
***
****
*****

package org.westos.demo5;


public class ForDemo2 {
    public static void main(String[] args) {
        //输出一个三角形
        //外层循环空行数,里层循环控制列数
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <=i; j++) {
                System.out.print("*");
            }
            System.out.println();

        }
    }
}
控制跳转语句break语句
  • 跳转语句的分类:
    break 中断
    continue 继续
    return 返回
  • break 使用在switch语句和循环语句中
    离开使用场景的存在是没有意义的
案例
package org.westos.demo5;


public class ForDemo4 {
    public static void main(String[] args) {
        for (int i = 0; i < 20; i++) {
            if(i==5){
                break;
            }
            System.out.println("爱老虎油");
        }
        System.out.println("----------------------");
        int j=1;
        while (true){
            j++;
            if(j==7){
                break;
            }
            System.out.println("爱老虎油");
        }
    }
}
控制跳转continue语句
  • 使用场景:循环语句,离开使用场景是没有意义的
  • 作用:跳出一次循环,执行下一步操作
案例
package org.westos.demo5;

public class ForDemo5 {
    public static void main(String[] args) {
       
        for (int i = 1; i <=10; i++) {
            if(i==5){
                continue; //跳过这次循环,继续下一次循环
            }
            System.out.println(i);
        }

        System.out.println("---------------------------");
        for (int i = 1; i <= 10; i++) {
            if(i%2==1){
                continue;
            }
            System.out.println(i);
        }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值