Java中scanner函数使用法则

Java中scanner使用法则

在Java中,java.util.Scanner 类用于从不同的输入源(如控制台、文件、字符串等)读取用户输入或文本数据,并将其解析为各种类型。以下是使用Scanner类的基本步骤和一些常见方法:

  1. 导入Scanner类:

    import java.util.Scanner;
    
  2. 实例化Scanner对象:

    • 从标准输入(通常是键盘)读取数据
      Scanner scanner = new Scanner(System.in);
      
    • 从文件读取数据
      File file = new File("path_to_your_file");
      Scanner scanner = new Scanner(file);
      
    • 从字符串读取数据
      String inputString = "Hello, world!";
      Scanner scanner = new Scanner(inputString);
      
  3. 使用Scanner对象进行读取操作:

    • 读取整数

      int intValue = scanner.nextInt();
      
    • 读取浮点数

      double doubleValue = scanner.nextDouble();
      
    • 读取字符串(直到遇到空格、制表符或换行符)

      String word = scanner.next();
      
    • 读取一行字符串(包括空格和标点符号)

      String line = scanner.nextLine();
      
    • 读取布尔值

      boolean boolValue = scanner.nextBoolean();
      
    • 读取其他类型(如字符、字节等),Scanner提供了相应的方法如 nextByte()nextShort() 等。

  4. 判断是否还有更多输入:

    if (scanner.hasNext()) {
        // 进行读取操作
    }
    
  5. 关闭Scanner以释放资源(对于文件输入流是必需的):

    scanner.close();
    
  6. 注意事项:

    • 在实际开发中,应该始终记得处理可能出现的异常,比如InputMismatchException,它会在输入的数据与预期类型不匹配时抛出。
    • 当需要获取多个值时,可以连续调用 nextXxx() 方法。
    • 使用 nextLine() 后再使用 nextInt() 或类似方法时,通常需要再次调用 nextLine() 来消费掉上一次读取后遗留的换行符,否则下一次的 nextLine() 可能会直接返回一个空字符串。

关于分割代码

split(“\\s+”) 任何空白符

在Java中,String[] words = input.split("\\s+"); 这行代码是用来将一个字符串(在这里是input)按照一系列连续的空白字符进行分割,并将结果存储为字符串数组words

  • split方法是Java String类的一个成员方法,它接收一个正则表达式作为参数,根据这个正则表达式来确定分割字符串的位置。

  • \\s 是正则表达式中的特殊字符,代表任何空白符(包括空格、制表符、换行符等)。在Java中,由于字符串字面量中 \ 本身是转义字符,所以要匹配一个正则表达式的 \s,我们需要写成 \\s

  • + 在正则表达式中表示前面的元素可以出现一次或多次。所以 \\s+ 表示的是一个或多个连续的空白字符。

因此,当你对一个字符串执行 input.split("\\s+") 时,它会查找并找出所有连续的空白字符序列,并在这些位置切割字符串。结果是一个字符串数组,其中每个元素都是原字符串中被空白字符分隔开的部分。例如:

String input = "Hello,   World! This is a test.";
String[] words = input.split("\\s+");

执行后,words数组将会包含如下内容:

words[0] = "Hello,"
words[1] = "World!"
words[2] = "This"
words[3] = "is"
words[4] = "a"
words[5] = "test."

split(“ ”) 单个空格

如果你使用 String[] words = input.split(" "); 来分割字符串,并且输入是 "hello world"(两个单词间有两个空格),split方法会基于单个空格作为分隔符进行拆分。

因此,结果数组 words 将会有两个元素:

  • words[0] = "hello"
  • words[1] = " world" (注意这里"world"前面确实保留了一个空格)

如果你想处理这种情况并消除分隔单词间的多个空格,你应该使用正则表达式来匹配一个或多个连续的空格,就像之前解释的那样:input.split("\\s+")。这样,无论中间有多少个空格,都会被视为一个分隔符,得到的结果将是:

  • words[0] = "hello"
  • words[1] = "world"
  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值