用户交互Scanner


用户交互

获取用户的输入,实现程序和人的交互

Java提供了一个工具类,java.util.Scanner 是 Java5 的新特征通过 Scanner 类来获取用户的输入

1.Scanner对象

创建 Scanner 对象的基本语法

Scanner s = new Scanner(System.in);

2.next() 和 nextLine() 的区别

通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据

  • next

    //创建一个扫描器Scanner对象,用于接收键盘数据
    Scanner s = new Scanner(System.in);
    System.out.println("Next方式接收:");
    //判断用户还有没有输入字符
    //hasNext方法当且仅当此扫描器有另一个标记时才返回 true
    if (s.hasNext()){
    //读取到有效字符
    //查找并返回来自此扫描器的下一个完整标记
     	String str = s.next();
     	System.out.println("输入内容:" + str);
    }
    //凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉.
    //如果你不彻底关, 占用资源就会觉得卡
    s.close();
    
  • nextLine

    //创建一个扫描器Scanner对象,用于接收键盘数据
    Scanner scanner = new Scanner(System.in);
    System.out.println("nextLine方式接收:");
    //判断用户还有没有输入字符
    //hasNextLine方法当且仅当此扫描器有另一行输入时才返回 true
    if (scanner.hasNextLine()) {
        //读取到有效字符
        //此扫描器执行当前行,并返回跳过的输入信息。
        String str2 = scanner.nextLine();
        System.out.println("输入内容:" + str2);
    }
    //凡是属于IO流的类如果不关闭会一直占用资源.要养成好习惯用完就关掉.
    //如果你不彻底关, 占用资源就会觉得卡
    scanner.close();
    

区别:

next():

  • 一定要读取到有效字符后才可以结束输入。
  • 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
  • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  • next() 不能得到带有空格的字符串。

nextLine():

  • 以Enter为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符。
  • nextLine() 可以获得空白。

3.其他方法

Scanner工具类还有接收其他数据类型的函数,例如 int 或 float 类型的数据,hasNextInt()、hasNextFloat() 来判断是否有该类型的数据输入,再使用 nextInt()、nextFloat 来读取

Scanner scan = new Scanner(System.in);
// 从键盘接收数据
int i = 0;
float f = 0.0f;
System.out.print("输入整数:");
if (scan.hasNextInt()) {
	// 判断输入的是否是整数
	i = scan.nextInt();
    // 接收整数
    System.out.println("整数数据:" + i);
} else {
    // 输入错误的信息
    System.out.println("输入的不是整数!");
}
System.out.print("输入小数:");
if (scan.hasNextFloat()) {
    // 判断输入的是否是小数
    f = scan.nextFloat();
    // 接收小数
    System.out.println("小数数据:" + f);
} else {
    // 输入错误的信息
    System.out.println("输入的不是小数!");
}
scan.close();

使用Scanner来输入多个数据,并求总和与平均数

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);
System.out.println(m + "个数的平均值是" + (sum / m));

scanner.close();

posted @   hello_12153_98  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示