2.Scanner、分支、循环

本文详细介绍了如何在Java中使用Scanner类获取用户输入,以及流程控制语句(if、switch、while、for)、增强for循环和跳转语句(break、continue、return)的使用方法,通过实例展示了如何处理用户输入并进行逻辑判断和循环操作。
摘要由CSDN通过智能技术生成

接受用户输入数据

 通过scanner对象来完成,数据的录入,Scanner类是Java提供的,供用户输入使用的类
   使用步骤:
         1.先导包,将系统提供的类包,导入到类中进行使用,在类名的上面导入
           import java.util.Scanner;
         2.创建Scanner对象,创建了对象之后,才能去使用,调用系统提供的方法
           Scanner sc = new Scanner(System.in);
         3.通过scanner对象,调用方法,获取需要的数据
           int i = sc.nextInt();  接收用户输入一个int类型的值,将这个值赋给i

import java.util.Scanner;

public class Demo020Scanner{
	public static void main(String[] args){
		
		//创建Scanner类的对象 sc
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请你输入一个数值A");
		
		//通过sc调用方法,接受用户的输入
		int i = sc.nextInt();
		
		System.out.println("请你输入一个数值B");
		int j = sc.nextInt();
		
		int max = i>j?i:j;
		
		//将用户输入的值输出
		System.out.println("输入的最大值是:"+max);
		
		//练习 使用scanner 完成,录入用户输入的三个数字,并求出三个数字的最大值
		Scanner s = new Scanner(System.in);
		System.out.println("请你输入一个数值k1");
		int k1=s.nextInt();
		System.out.println("请你输入一个数值k2");
		int k2=s.nextInt();
		System.out.println("请你输入一个数值k3");
		int k3=s.nextInt();
		int max1=(k1>k2?k1:k2)>k3?(k1>k2?k1:k2):k3;
		System.out.println("输入的最大值是:"+max1);
		
		
		//使用使用scanner 完成,判断用户输入的数字是否为偶数
		Scanner n = new Scanner(System.in);
		System.out.println("请你输入一个数值n");
		int n=s.nextInt();
		System.out.println("输入的值是"+(n%2==0 ? "偶数":"奇数"));
		
		
	}
}
	


流程控制语句

流程控制主要用来控制代码的执行的流程
    默认情况下,代码都是从上到下,依次执行的
    将来可以通过分支语句或者循环语句来控制代码语句的执行流程

    1.顺序执行流程


    2.分支语句

         if

         三种用法:
         语法1:如果括号中表达式成立,则执行代码体内容
                if(条件表达式){
                    代码体;
                }
         语法2:如果括号中表达式成立,则执行代码体1,不成立执行代码体2
                if(条件表达式){
                    代码体;
                }else{
                    代码体2;
                }
          语法3:如果条件1成立,则执行代码体1,条件2成立,执行代码体2,条件3成立,执行代码体3,都不成立执行代码体4
                if(条件1){
                    代码体;
                }else if(条件2){
                    代码体2;
                }else if(条件3){
                    代码体3;
                }else{
                    代码体4;
                }    

import java.util.Scanner;

public class DemoIf{
	/*
	  让用户输入考试成绩,根据成绩判断能得到什么奖励
	*/  
	public static void main(String[] args){
		
		//创建Scanner类的对象 sc
		Scanner sc = new Scanner(System.in);
		
	/*
		System.out.println("请你输入你的考试成绩");
		
		int cmark = sc.nextInt();
		
		//如果超过90,可以获得1000元奖励;80,200;其他没有
		if(cmark>90){
			System.out.println("奖励1000!");
		}else if{
			System.out.println("奖励200!");
		}else{
			System.out.println("没有奖励!");
		}
	*/	
		
		//if的嵌套使用
		//录入学生的两门考试分数,语文和数学,如果语文低于90,没有奖励;
		//如果语文超过90,数学>90,可以获得1000元奖励;数学>80,200;其他没有
		System.out.println("请你输入你的语文成绩");
		int cmark1 = sc.nextInt();		
		if(cmark1>90){
			System.out.println("请你输入你的数学成绩");
		    int cmark2 = sc.nextInt();
			if(cmark2>90){
				System.out.println("奖励1000!");				
			}else if(cmark2>80){
				System.out.println("奖励200!");
			}else{
				System.out.println("没有奖励!");
			}
		}else{
			System.out.println("没有奖励!");
		}
		
	}
}
	


         switch case 语句

         也称为开关语句
         根据某个表达式的值,在多个case引导的分支语句中,选择一个和表达式结果相同的值,来执行对应的这个case中的代码
         语法:如果表达式值 = 值1,就执行代码1
                             表达式值 = 值2,就执行代码2

                               ....

                         都不符合,就执行default中的代码n
           switch(表达式值){
               case 值1:
                 代码1;
               break;
               case 值2:
                 代码2;
               break;
               ...
               default:
               代码n;                       
           }
           使用注意:
             1.case后面只能跟常量,不能跟变量,而且值不能重复
             2.switch的后面可以跟byte、short、char、int、String(字符串),不能跟long和浮点型
             3.break可以省略,但是会发生case穿透现象,不建议省略
             4.default是可选的语句,表示执行不满足条件的语句

import java.util.Scanner;

public class DemoSwitch{
	
	public static void main(String[] args){
		/*
	  让用户输入1-5,返回对应是星期几
	*/  
		//创建Scanner类的对象 sc
		Scanner sc = new Scanner(System.in);
		
		System.out.println("输入1-5之间的数字");
		
		int num = sc.nextInt();
		//long num = sc.nextInt()Long;
		//byte num = sc.nextInt()Byte;
		switch(num){
			case 1:
			System.out.println("星期一");
			break;
			case 2:
			System.out.println("星期二");
			break;
			case 3:
			System.out.println("星期三");
			break;
			case 4:
			System.out.println("星期四");
			break;
			case 5:
			System.out.println("星期五");
			break;
			default:
			System.out.println("输入值不在范围内");	
		}
		
	}
}

 循环语句

    循环指的是,重复地去做某一件事情,在Java中表示重复的执行一段代码,
    循环必须要有结束条件,不然这个循环就是一个死循环
    将来如果有一些重复性的代码,都可以提取成循环的形式

   while循环

语法: 如果表达式的结果为true,那么就执行代码体中的内容,所以这个表达式也作为结束循环的条件
              将来在这个代码体中,需要将条件改变到结束循环的值
             while(表达式条件){
                执行代码体;
                条件改变;
            }

 
    do while循环

do-while最少会执行一次代码
       语法:
             do{
                 代码;
                 条件改变;
             }while(条件);

public class DemoWhile{
	public static void main(String[] args){
		
		/*System.out.println(1);
		System.out.println(2);
		System.out.println(3);
		System.out.println(4);
		System.out.println(5);
		System.out.println(6);
		System.out.println(7);
		System.out.println(8);
		System.out.println(9);
		System.out.println(10);*/
		//测试while循环的用法
		
		//循环输出1-10
		int i=1;
		while(i<=10){
			System.out.println(i);
			i++;
		}
		
		//使用while循环求1-100的和
		int j=1;
		int sum=0;
		while(j<=100){
			//sum=sum+j;
			sum+=j;
			j++;	
		}
		System.out.println("1-100的和:"+sum);
		
		//用两种方法使用while求1-100偶数的和
		//方法一
		int m=2;
		int sum1=0;
		
		while(m<=100){
			sum1+=m;
			m+=2;//m每次循环都给自身加2
		}
		System.out.println("1-100的偶数和:"+sum1);
		
		//方法二
		int n=1;
		int sum2=0;
		while(n<=100){
			//如果n是偶数才做累加
			if(n%2==0){
			sum2+=n;	
			}
			n++;
		}
		System.out.println("1-100的偶数和:"+sum2);
		
		
		System.out.println("---------------------------------------");
		
		/*do-while的用法*/ 
		
		//1-100的和
		int x=1;
		int sum3=0;
		do{
			sum3+=x;
			x++;
		}while(x<=100);
		System.out.println("1-100的和:"+sum3);
		
		//使用do-while求1-100奇数的和
		int y=1;
		int sum4=0;
		do{
			sum4+=y;
			y+=2;
		}while(y<=100);
		System.out.println("1-100的奇数和:"+sum4);
		
		
		int z=1;
		int sum5=0;
		do{
			if(z%2==1){
				sum5+=z;
			}
			z++;
		}while(z<=100);
		System.out.println("1-100的奇数和:"+sum5);
			
		
	}
}

for循环

语法:
             表达式1:一般都是循环变量的声明
             表达式2:一般都是循环的条件以及结束的条件
             表达式3:一般都是循环的条件变化
             
             执行过程
                1.先判断表达式2,如果表达式成立,则执行代码体内容
                2.再执行表达式3
                3.然后再判断表达式2是否成立,如果成立,则继续执行代码体
                
                循环判断2、3步骤
                直到循环结束
                
            for(表达式;表达式2;表达式3){
                代码体;
            }    

public class Demo01For{
	public static void main(String[] args){
		
		
		//使用for循环求1-100的和
		int sum=0;
		for(int i=1;i<=100;i++){
			//sum=sum+j;
			sum+=i;	
		}
		System.out.println("1-100的和:"+sum);
		
		
		
		//使用for求1-100偶数的和
		int sum1=0;
		for(int m=2;m<=100;m+=2){
			sum1+=m;
		}
		System.out.println("1-100的偶数和:"+sum1);
		
		
		
		//使用for循环求水仙花数
		//水仙花数指的是三位数   100-999
		//个位的三次方 + 十位的三次方+ 百位的三次方 = 数值本身
		
		
		
		for(int k=100;k<=999;k++){
			int k1 = k / 100;
			int k2 = k / 10 % 10;
			int k3 = k % 10;
			if(k== k1*k1*k1 + k2*k2*k2 + k3*k3*k3){
				System.out.println("水仙花数:"+k);//水仙花数:153,水仙花数:370,水仙花数:371,水仙花数:407
			}
		}
		
		
	}
}

for循环的嵌套使用
             一个循环中包含了另一个循环
             for(表达式;表达式2;表达式3){
                 for(表达式;表达式2;表达式3){
                代码体;
                 }
                代码体;
            }

public class Demo02For{
	public static void main(String[] args){
		
		
		/*
		每次只能输出一个*
		*****
		*****
		*****
		*****
		*/
		/*
		for(int i=1;i <= 5;i++){
			System.out.println("*");
		}
		System.out.println(" ");
		for(int i=1;i <= 5;i++){
			System.out.println("*");
		}
		for(int i=1;i <= 5;i++){
			System.out.println("*");
		}
		for(int i=1;i <= 5;i++){
			System.out.println("*");
		}
		*/
		
		/*
		//外层的循环,一般用来控制行数
		for(int j=1;j<=4;j++){
			//里面的循环,一般用来控制列数
			for(int i=1;i <= 5;i++){
			   System.out.print("*");
		    }
		    System.out.println(" ");
		}
		*/	
		
		/*
		//乘法口诀表
		for(int m=1;m<=9;m++){
			for(int n=1;n<=m;n++){
				System.out.print(m +"*"+ n +"="+ (m*n) + " ");
			}
			System.out.println();
		}
		*/		
		

		/*打印图形
		    *
		   ***
		  *****
         *******
        *********
         */
         for(int i=1;i<=5;i++){
			 for(int k=1;k<=5-i;k++){
				 System.out.print(" ");
			 }
			 for(int j=1;j<=(2*i-1);j++){
				 System.out.print("*");
			 }
			 System.out.println();
				 
		 }        
		
	
	}
}
		

增强for循环

           一般用来遍历数组、集合等有多个数值的对象

             语法:

             for(类型 变量名:集合){

              }

跳转语句

     break:主要用在循环中或switch语句中,离开这两个使用场景无意义
       作用:跳出单层循环、多层循环,或者跳出case语句 
     continue:终止当前一次循环,继续下次循环
     return:结束方法,执行后,方法就不继续往下运行了

public class DemoBreak{
	public static void main(String[] args){
		
		//测试break、continue、return的用法
		
		for(int i=1;i<=10;i++){
			if(i == 5){
				//break;  //跳出循环
				continue;  //跳出本次循环,继续下次循环
				//return;  //结束方法
			}
			System.out.println(i);
		}
		System.out.println("执行程序结束");
		
		//使用continue,求1-100偶数和
		int sum=0;
		for(int k=1;k<=100;k++){
			
			if(k%2==1){
				continue;
			}
			sum += k;			
		}
		System.out.println("1-100偶数和为"+sum);
		
		
		//使用break跳出多层循环
		//需要配合提示词一起使用
		wc:for(int m=1;m<=5;m++){
			nc:for(int n=1;n<=5;n++){
				if(n==3){
					//break;   //默认跳出内层循环
					break wc;
				}
				System.out.print(n);
			}
			System.out.println();
		}
//编写一个程序,可以实现
		//1.录入班级学生人数  sum1
		//2.录入每个学生的成绩  cmark
		//3.统计班级80分以上的学生比例  sum2   cmark>80   sum1/sum2

		
	//	
import java.util.Scanner;		
public class Practice{
	public static void main(String[] args){
		
		//创建输入对象,准备后续内容的输入
		Scanner sc = new Scanner(System.in);
		System.out.println("请你输入班级人数");
		
		//确定班级人数,通过输入对象输入		
		int num = sc.nextInt();
		int score;
		int count=0;
		//根据人数做循环,循环的次数就是录入的人数
		for(int i=1;i<=num;i++){
			System.out.println("请你输入学生成绩");
			score=sc.nextInt();
			//循环录入分数的同时判断分数是否超过80,超过了就记录下来
			if(score<80){
				continue;
			}
			count++;
		}
		System.out.println("超过80分的学生数量"+count);
		//记录的超过80分的数量/总数量
		double rate = (double) count / num *100;
		System.out.println("超过80分的学生比例"+ rate + "%");
		

	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值