首页 > 编程语言 >Java 流程控制

Java 流程控制

时间:2023-12-30 22:00:15浏览次数:32  
标签:语句 控制 Java scanner 流程 System 循环 表达式 Scanner

用户交互 Scanner

  • Scanner 可以获取用户的输入内容,类似于 Python 的 input。

  • 基本语法

    import java.util.Scanner;
    Scanner s = new Scanner(System.in);
    
  • 通过 Scanner 类的 next()与 nextline()方法获取输入的字符串,在读取前我们一般需要使用 hasNext()与 hasNextLine()判断是否还有输入的数据。

    import jaa.util.Scanner;
    public class Test{
    	public static void main(String[] args){
    		Scanner scanner = new Scanner(System.in);	//创建一个扫描器对象用于接收数据
    		System.out.println("使用 next 方式接收:");	
    		
    		//判断用户有没有输入字符
    		if (scanner.hasNext()){
    			String str = scanner.next();
    			System.out.println("输出内容为:"+str);//如果输入 hello world!,那么只会输出 hello
    		}
    		
    		scanner.close();	//关闭接收数据,防止继续占用资源。IO 流的类如果不关闭则会一直占用资源。
    		
    		Scanner scanner = new Scanner(System.in);	//创建一个扫描器对象用于接收数据
    		System.out.println("使用 nextline 方式接收:");	
    		
    		//判断用户有没有输入字符
    		if (scanner.hasNextLine()){
    			String str = scanner.nextLine();
    			System.out.println("输出内容为:"+str);//如果输入 hello world!,那么会输出 hello world!
    		}
    		
    		scanner.close();	
    	}
    }
    
    • next():
      • 一定要读取到有效字符后才可以结束输入
      • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
      • 只有输入有效字符之后才将其后面输入的空白作为分隔符或者结束符
      • next()不能得到带有空格的字符串
    • nextLine():
      • 以 enter 为结束符,也就是说 nextLine 会读取输入 enter 前的所有字符。
      • 可以获取空白
  • 通过 scanner 获取字符串或者整数:

    import java.util.Scanner;
    public clss Test{
    	public static void main(String[] args){
    		//接收字符串
    		Scanner scanner = new Scanner(System.in);
    		System.out.println("请输入数据:");
    		String str = scanner.nextLine();
    		System.out.println("输入内容为:"+str);
    		scanner.close()
    		
    		//接收整数
    		Scanner scanner = new Scanner(System.in);
    		int i = 0;
    		System.out.println("请输入整数:");
    		//如果..那么..
    		if(scanner.hasNextInt()){		//if()括号里面默认判断 scanner.hasNextLine == True
    			i = scanner.nextInt();
    			System.out.println("整数数据:"+i);
    		}else{
    			System.out.println("请输入正确的整数!");
    		}
    	}
    }
    
  • 通过 scanner 获取多个数字并求值

    public class Test{
    	public static void main(String[] args){
    		Scanner scanner = new Scanner(System.in);
    		double sum = 0; //求和
    		int m = 0;			//计算输入多少个数字
    		
    		while (scanner.hasNextDouble()){
    			double x = scanner.nextDouble();
    			m = m + 1;
    			sum = sum + x;
    			System.out.println("你输入了第"+m+"个数据,当前和结果sum="+sum);
    		}
    		System.out.println(m+"个数的和为"+sum);
    		System.out.println(m+"个数的平均值为"+(sum/m));
    	}
    }
    

顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就是按照顺序一句一句执行。
  • 顺序结构是最简单的算法结构。
  • 语句与语句之间,框与框之间是按从上到下的顺序执行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

选择结构

  • if 单选择结构

    语法:

    if(布尔表达式){
    	//如果布尔表达式为 true 则执行的操作
    }
    
  • if 双选择结构

    语法:

    if(布尔表达式){
    	//如果布尔表达式为 true 执行的操作
    }else{
    	//如果布尔表达式为 false 执行的操作
    }
    
  • if 多选择结构

    if(布尔表达式1){
    	//符合布尔表达式 1 执行的操作
    }else if(布尔表达式 2){
    	//符合布尔表达式 2 执行的操作
    }else{
    	//如果不符合以上所有布尔表达式执行的操作
    }
    
  • 嵌套的 if 结构

    使用嵌套的 if...else 语句是合法的。也就是说可以在另一个 if 或者 else if 语句中使用 if 或者 else if 语句,可以像 if 语句一样嵌套 else if...else。

    语法:

    if(布尔表达式 1){
    	//如果布尔表达式 1 为 true 执行代码
    	if(布尔表达式 2){
    		//如果布尔表达式 2 为 true 执行代码
    	}
    }
    
  • switch 多选择结构

    • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

    • switch 语句中变量类型可以是 byte、short、int、char,从 Java SE 7 开始,switch 支持字符串 String 类型了,同时 case 标签必须为字符串常量或字面量。

    • 语法:

      switch(expression){
      	case value :
      		//语句
      		break;	//可选
      	//可以添加任意数量的 case 语句
      	case value :
      		//语句
      		break;	//可选
      	default :	//可选
      		//语句
      }
      
    • case 穿透现象:如果没有 break,那么一旦匹配则会一直执行之后的操作命令

循环结构

  • while 循环

    • while 是最基本的循环,它的结构为:

      while(布尔表达式){
      	//循环内容
      }
      
    • 只要布尔表达式为 true,循环就是一直执行下去,根据实际需要是否加上结束循环的语句

    • 死循环:指循环条件一直为 true,造成无限循环

  • do...while循环

    • 与 while 循环相比,do while 则是先则行 do 操作,之后再进行 while 循环操作,也就是说即使不满足 while 循环条件,也会至少执行一次操作。如果 while 的条件为 true 则会循环执行 do 操作的命令

    • 语法:

      do{
      	//代码语句
      }while(布尔表达式);
      
  • for 循环

    • for 循环是最有效、最灵活的循环结构。

    • for 循环执行的次数,在最开始就已经确定好了,语法结构为:

      for(初始化;布尔表达式;更新){
      //代码语句
      }
      
  • 增强 for 循环

    • Java5引入的一种主要用于数组或集合的增强型 for 循环

    • 语法:

      for(声明语句 : 表达式)
      {
      	//代码语句
      }
      
      //举例
      public class Test{
      	public static void main(String[] args){
      		int[] numbers = {10,20,30,40,50};	//定义一个数组
      		//遍历数组的元素
      		for (int x : numbers){
      			System.out.println(x);
      		}
      		
      		//也可以用以下方法遍历元素
      		for (int i = 0;i<5;i++){
      			System.out.println(numbers[i]);
      		}
      	}
      }
      
    • 声明语句:声明新的局部变量,该变量类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

    • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

  • break、continue、goto

    • break:强制退出循环,不执行循环中的剩余语句(在 switch 语句中使用)
    • continue:终止某次循环过程,不执行剩余尚未执行的语句,之后进行下次是否循环的判定
    • goto:是一个 Java 的关键字,但是并未在语言中得到正式使用。

标签:语句,控制,Java,scanner,流程,System,循环,表达式,Scanner
From: https://www.cnblogs.com/cxrx/p/17936891

相关文章

  • js进行控制替换顶部标题内容【进行防检测】
    为了防检测,特意出了一款js进行控制替换顶部标题内容js代码如下:<script>document.getElementsByTagName("title")[0].innerText='醉学网';functionSetTab(name,cursel){for(vari=1;i<=4;i++){varmenu=document.getElementById(name+i);......
  • JavaScript改变this指向的三种方法
    JavaScriptcall()方法它可以用来调用所有者对象作为参数的方法。通过 call(),您能够使用属于另一个对象的方法。varperson={fullName:function(){returnthis.firstName+""+this.lastName;}}varperson1={firstName:"Bill",lastN......
  • java自动化前置基础
     java自动化前置基础(01):配置文件解析(properties)java自动化前置基础(02):jdbc数据库操作java自动化前置基础(03):fastjson的使用(处理json字符串、json数组)java自动化前置基础(04):jsonpath的使用java自动化前置基础(05):java操作excel(通过POI)java自动化前置基础(06):HttpClient的使用(get、po......
  • JavaWebDay8
    一:多表查询 1.内连接(查询的是两张表的交集部分)2.外连接写在left或right左边的是左表数据右边的是右表数据,两个可以互相改造3.子查询a.标量子查询b.列子查询c.行子查询把括号里多余的删除,例如上述中entrydate中job是多余的则把job删除,而job中entrydate是多余的......
  • 无涯教程-Java 正则 - Matcher boolean hasTransparentBounds()函数
    java.time.Matcher.hasTransparentBounds()方法查询此匹配器的区域边界。booleanhasTransparentBounds()-声明以下是java.time.Matcher.hasTransparentBounds()方法的声明。publicbooleanhasTransparentBounds()booleanhasTransparentBounds()-返回值如果此匹配器......
  • 无涯教程-Java 正则 - Matcher boolean hasAnchoringBounds()函数
    java.time.Matcher.hasAnchoringBounds()方法查询此匹配器的区域边界定位。booleanhasAnchoringBounds()-声明以下是java.time.Matcher.hasAnchoringBounds()方法的声明。publicbooleanhasAnchoringBounds()booleanhasAnchoringBounds()-返回值如果此匹配器使用锚......
  • 06PCIE的GPIO控制卡
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!6.1概述还记得2008年左右刚刚参加工作,买一个简单的PCI的DAQ数据卡,或者IO卡都要好几千元。市面上主要是研华,凌华的数据......
  • 解决Java无效发行版本
    1.问题及原因平时工作学习中我们在使用idea开发中经常会遇到以下问题,java:“无效的目标发行版:11”冲突。如下图:其实出现问题的真正原因是你download别人的代码,但是别人的JDK属于java11或者java9,但是i你的为java8或者更低,所以会出现以下的问题,那应该如何解决呢? 2.解决......
  • Android显示流程
    Android的显示过程具体包含这三部分:内容端(绘制)、SurfaceFlinger/Hwcomposer(合成)、DisplayProcessor及显示接口如LCD(显示) UE游戏的绘制过程: 绘制Application/Activity/ViewApplication包括4大组件:Activity、Service、Broadcast、ContentProviderActivity是带有生命周期......
  • 无涯教程-Java 正则 - Matcher int groupCount函数
    java.time.Matcher.groupCount()方法返回此匹配器模式中的捕获组数。intgroupCount()-声明以下是java.time.Matcher.groupCount()方法的声明。publicintgroupCount()intgroupCount()-返回值此匹配器模式中的捕获组数。intgroupCount()-示例下面的示例显示jav......