Java学习之路:流程控制

2022-10-11 10:58:41
前言本文开始流程控制方面的学习,主要包括用户交互和流程控制语句,适合新手学习 。
1 用户交互Scanner1.1 Scanner对象Java提供了一个可以获取用户输入的Scanner工具类
基本语法:
Scanner s = new Scanner(System.in);
通过Scanner类的next()nextLine()方法获取输入的字符串,读取之前使用hasNext()hasNextLine()判断是否还有输入的数据 。
next()nextLine()方法代码示例:
public class Demo01 {public static void main(String[] args) {//创建一个扫描器对象,用于接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("使用next方式接收:");//判断用户有没有输入字符串if (scanner.hasNext()==true){//使用next方式接收String str = scanner.next();System.out.println("输出的内容为:"+str);}//凡是属于IO流的类,如果不关闭会一直占用资源,要养成良好习惯,用完就关scanner.close();}}结果:
使用next方式接收:hello world输出的内容为:hello【注意】:无法输出空格之后的数据

  • 一定要读取到有效字符后才可以结束输入
  • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
  • 只有输入有效字符才将其后面输入的空白作为分隔符或者结束符
  • next()不能得到带有空格的字符串
hasNext()hasNextLine()方法代码示例:
public class Demo02 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("使用nextLine方式接收:");//判断是否还有输入if (scanner.hasNextLine()){String str = scanner.nextLine();System.out.println("输出的内容为"+str);}scanner.close();}}结果:
使用nextLine方式接收:hello world输出的内容为hello world
  • 以enter为结束符
  • 可以获取空格
hasNextInt()hasNextFloat() 方法示例:
import java.util.Scanner;public class Demo03 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//从键盘接收数据int i = 0;float f = 0.0f;System.out.println("请输入整数:");if (scanner.hasNextInt()){i = scanner.nextInt();System.out.println("整数数据:"+i);}else{System.out.println("输入的不是整数数据!");}System.out.println("请输入小数:");if (scanner.hasNextFloat()){f = scanner.nextFloat();System.out.println("小数数据:"+f);}else{System.out.println("输入的不是小数数据!");}scanner.close();}}结果:
请输入整数:10整数数据:10请输入小数:0.6小数数据:0.61.2 Scanner进阶【练习题】:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
import java.util.Scanner;public class Demo01 {public static void main(String[] args) {//输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果Scanner scanner = new Scanner((System.in));//从键盘接收数据double sum = 0;//计算输入了多少个数字int m = 0;System.out.println("请输入数据:");//通过循环判断是否还有输入,并在里面对每一次进行求和和统计while (scanner.hasNextDouble()){double x = scanner.nextDouble();m = m + 1; //m++sum = sum + x;System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);}System.out.println(m + "个数的和为" + sum);System.out.println(m + "个数的平均数为" + (sum / m));scanner.close();}}结果:
请输入数据:10你输入了第1个数据,当前结果sum=10.022你输入了第2个数据,当前结果sum=32.0222你输入了第3个数据,当前结果sum=254.0X3个数的和为254.03个数的平均数为84.66666666666667

经验总结扩展阅读