Scanner类的使用

Scanner类

介绍

这是一个用于抓取输入的类,可以从控制台抓取输入,也可以从文件抓取输入,

这个类有点像Stream,一旦使用了Next()系列函数就会移位,如果数据没有保存,就会丢失。

主要方法

1.用于判断后续的hasNext*系列函数

这些方法使用不会将scanner移位,仅仅用于判断后续,但这个系列的函数有个比较尴尬的地方,在使用控制台输入数据的时候,且循环条件为while(scan.hasNext())的时候,往往最后一行不能抓取到,必须按下回车之类的。

例如

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String str1 = sc.nextLine();
            System.out.println("输入的数据为:" + str1 + "  长度 : " + str1.length());
            if (str1.equals("q"))
                break;
        }
        sc.close();
    }

当你从txt复制数据到控制台的时候,有两种情况:

1.没有复制到空白的一行,光标在数据末尾。

在这里插入图片描述
在这里插入图片描述

2.复制到空白的一行,光标在新的一行首位。

在这里插入图片描述

输出有最后一行。

在这里插入图片描述

2用于得到输入的Next*系列函数

这里主要讨论Next()NextLine()的区别

1.Next()

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

2.NextLine()

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

3.两者混合使用

public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);

        while(sc.hasNextLine()){

            String str1 = sc.next();
            System.out.println("next()抓取的数据为:" + str1 + " 长度 : " + str1.length());
            
            String str2 = sc.nextLine();
            System.out.println("nextLine()抓取的数据为:" + str2 + " 长度 : " + str2.length());
            System.out.println();


            if(str1.equals("q"))
                break;
        }
        sc.close();
    }
1
  3
44
2 3 2    1 7    8 8
2 1 8 7

代码和输入数据为以上。

总之,对于同一行的数据来说,先使用Next()会得到第一个数据,再使用一次NextLine()如果这一行还有数据,就会读取后续的所有数据,不管是否为空格;如果这一行的数据没了,则会得到一个str.lenth()为0的空字符串;

在这里插入图片描述

非常感谢您的提问。以下是Java中Scanner的简单介绍和使用方法示例: Scanner包含在Java.util包中,用于从控制台读取用户输入的数据。Scanner有多种不同的构造函数,它们可以接受不同型的输入源。例如,通过传递System.in作为输入源,可以从控制台读取输入。 Scanner使用方法如下: 1. 导入java.util.Scanner包。 2. 创建Scanner的对象。 3. 使用Scanner对象的相关方法将输入数据读取到变量中。 下面是一个简单的Java程序,使用Scanner从控制台读取输入并将其输出到屏幕上: import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { //创建Scanner对象 Scanner scanner = new Scanner(System.in); //从控制台读取整数 System.out.print("请输入一个整数: "); int num = scanner.nextInt(); //从控制台读取字符串 System.out.print("请输入一行字符串: "); String str = scanner.nextLine(); //输出输入的整数和字符串 System.out.println("输入的整数是: " + num); System.out.println("输入的字符串是: " + str); } } 在这个示例中,我们首先创建了一个Scanner对象,将其与System.in关联,以从控制台接收输入。 然后,我们使用nextInt()方法从控制台读取输入并将其存储在一个整数变量中。接下来,我们使用nextLine()方法从控制台读取输入的一行字符串。 最后,我们使用println()方法将输入的整数和字符串输出到屏幕上。 希望这个示例对您有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值