81-Java Scanner 类

Java Scanner 类

在本教程中,我们将借助示例学习Java Scanner及其方法。

java.io包的PrintWriter类可用于以通常可读的形式(文本)写入输出数据。

java.util包的Scanner类用于从不同的源(例如输入流,用户,文件等)读取输入数据。让我们举个实例。

示例1:使用扫描器读取一行文本

示例

复制代码
import java.util.Scanner;

class Main {
    public static void main(String[] args) {

        //创建一个对象 Scanner
        Scanner input = new Scanner(System.in);

        System.out.print("输入姓名: ");

        // 从键盘接收输入
        String name = input.nextLine();

        // 打印输出姓名
        System.out.println("我的名字是 " + name);

        // Closes the scanner
        input.close();
    }
}

输出结果

复制代码
输入姓名: Jack
我的名字是  Jack

在上面的示例中,请注意以下行

复制代码
Scanner input = new Scanner(System.in);

在这里,我们创建了一个名为input的Scanner对象。

System.in参数用于从标准输入中获取输入。 就像从键盘上获取输入一样。

然后,我们使用Scanner类的nextLine()方法从用户那里读取一行文本。

现在您对Scanner有了一些了解,让我们对其进行更多的探索。

导入扫描器类

从上面的示例可以看到,我们需要先导入java.util.Scanner包,然后才能使用Scanner类。

复制代码
import java.util.Scanner;

用Java创建扫描程序对象

如上所述,导入包后,就可以创建Scanner对象。

复制代码
//从输入流中读取输入
Scanner sc1 = new Scanner(InputStream input);

//从文件读取输入
Scanner sc2 = new Scanner(File file);

//从字符串中读取输入
Scanner sc3 = new Scanner(String str);

在这里,我们创建了Scanner类的对象,这些对象将分别从 InputStream、文件和字符串读取输入。

Java扫描器输入方法

Scanner类提供各种方法,使我们能够读出不同类型的输入。

方法 描述
nextInt() 从用户读取int值
nextFloat() 从用户读取float值
nextBoolean() 从用户读取boolean值
nextLine() 从用户读取一行文本
next() 从用户那里读取一个单词
nextByte() 从用户读取byte值
nextDouble() 从用户读取double值
nextShort() 从用户读取short值
nextLong() 从用户读取long值

示例2:Java扫描器 nextInt()

示例

复制代码
import java.util.Scanner;

class Main {
    public static void main(String[] args) {

        //创建扫描器对象
        Scanner input = new Scanner(System.in);

        System.out.println("输入一个整数: ");

        //读取一个int值
        int data1 = input.nextInt();

        System.out.println("使用 nextInt(): " + data1);

        input.close();
    }
}

输出结果

复制代码
输入一个整数:
22
使用 nextInt(): 22

在上面的示例中,我们使用了nextInt()方法来读取整数值。

示例3:Java 扫描器 nextDouble()方法

示例

复制代码
import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      //创建一个Scanner对象
      Scanner input = new Scanner(System.in);
      System.out.print("输入双精度值: ");

      //读取双精度值
      double value = input.nextDouble();
      System.out.println("使用 nextDouble(): " + value);

      input.close();
   }
}

输出结果

复制代码
输入双精度值: 33.33
使用 nextDouble(): 33.33

在上面的示例中,我们使用了nextDouble()方法来读取浮点值。

示例4:Java扫描器 next() 方法

示例

复制代码
import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      //创建一个Scanner对象
      Scanner input = new Scanner(System.in);
      System.out.print("Enter your name: ");

      //读取整个单词
      String value = input.next();
      System.out.println("Using next(): " + value);

      input.close();
   }
}

输出结果

复制代码
Enter your name: Jonny Walker
Using next(): Jonny

在上面的示例中,我们使用next()方法从用户读取字符串。

在这里,我们提供了全名。 但是,next()方法仅读取名字。

这是因为next()方法将输入读取到空格字符。一旦遇到空格,它就返回字符串(不包括空格)。

示例5:Java扫描器nextLine()方法

示例

复制代码
import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      //创建一个Scanner对象
      Scanner input = new Scanner(System.in);
      System.out.print("Enter your name: ");

      //读取整行
      String value = input.nextLine();
      System.out.println("Using nextLine(): " + value);

      input.close();
   }
}

输出结果

复制代码
Enter your name: Jonny Walker
Using nextLine(): Jonny Walker

在第一个示例中,我们使用了nextLine()方法从用户读取字符串。

与next()不同,nextLine()方法读取包括空格在内的整个输入行。当该方法遇到下一行字符\n时终止。

Java扫描器 BigInteger 和 BigDecimal

Java扫描程序还可以用于读取大整数和大十进制数。

  • nextBigInteger() - 从用户读取大整数值

  • nextBigDecimal() - 从用户读取大十进制值

示例4:读取BigInteger和BigDecimal

示例

复制代码
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Scanner;

class Main {
   public static void main(String[] args) {

      //创建一个Scanner对象
      Scanner input = new Scanner(System.in);
      System.out.print("输入一个大整数: ");

      //读取大整数
      BigInteger value1 = input.nextBigInteger();
      System.out.println("Using nextBigInteger(): " + value1);

      System.out.print("输入一个大十进制: ");

      //读取大十进制
      BigDecimal value2 = input.nextBigDecimal();
      System.out.println("Using nextBigDecimal(): " + value2);

      input.close();
   }
}

输出结果

复制代码
输入一个大整数: 987654321
使用 nextBigInteger(): 987654321
输入一个大十进制: 9.55555
使用 nextBigDecimal(): 9.55555

在上面的示例中,我们使用java.math.BigInteger和java.math.BigDecimal包分别读取BigInteger和BigDecimal。

Java扫描器的工作方式

扫描器类读取整个行,并将该行划分为记号。令牌是对Java编译器有一定意义的小元素。例如

假设有一个输入字符串:

复制代码
He is 22

在这种情况下,扫描程序对象将读取整行并将该字符串分为令牌:" He "," is "和" 22 "。然后,对象遍历每个令牌,并使用其不同方法读取每个令牌。

注意:默认情况下,空格用于划分标记。


🎁 福利时间

如果你正在备战面试或者想要学习其他知识,给大家推荐一个宝藏知识库,作者整理了一些列 Java 程序员需要掌握的核心知识,有需要的自取不谢。

知识库地址:https://farerboy.com/


相关推荐
YIN_尹1 小时前
【Linux系统编程】基础IO第一讲——系统文件IO
android·java·linux·c++
聆风吟º1 小时前
【C标准库】深入理解C语言 atoi 函数:字符串转换为整数
c语言·开发语言·库函数·atoi
j_xxx404_1 小时前
MySQL数据库基础硬核解析:从 C/S 网络服务到磁盘文件与存储引擎
linux·运维·服务器·开发语言·数据库·mysql·ai
艾莉丝努力练剑1 小时前
【QT】系统相关:QT文件
linux·服务器·开发语言·网络·qt·tcp/ip·计算机网络
linge_sun1 小时前
Sping AI 使用 Ollama 快速搭建本地知识库
java·人工智能·ai编程
沐苏瑶1 小时前
深入浅出 Java 文件操作与 IO:从文件系统到数据流实战
java·开发语言
海鸥-w1 小时前
用python (fastapi)做项目第二天实现新闻列表和新闻详情接口
开发语言·python·fastapi
Cloud_Shy6181 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 25 - 26)
开发语言·人工智能·经验分享·笔记·python·学习方法
唐青枫1 小时前
Java MyBatis-Plus 实战指南:用 BaseMapper、Wrapper 和分页写好数据层
java·mybatis