Java 中的 Scanner 类是什么?它是什么时候引入的?

java 8object oriented programmingprogramming更新于 2025/9/19 23:40:17

在 Java 1.5 之前,程序员通常依赖于字符流类和字节流类来读取用户数据。

从 Java 1.5 开始引入了 Scanner 类。此类接受 File、InputStream、Path 和 String 对象,并使用正则表达式逐个标记读取所有原始数据类型和字符串(来自给定源)。

默认情况下,空格被视为分隔符(用于将数据拆分为标记)。

使用此类提供的 nextXXX() 方法从源读取各种数据类型,即 nextInt()、nextShort()、nextFloat()、nextLong()、nextBigDecimal()、nextBigInteger()、nextLong()、nextShort()、nextDouble()、nextByte()、nextFloat() 和 next()。

示例 − 从键盘读取数据

以下 Java 程序从用户读取姓名、出生日期、学号和百分比,并打印出用户的年龄和年级。这里,我们使用 Scanner 类的方法来读取数据。

示例

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.ZoneId;
import java.util.Date;
import java.util.Scanner;
public class ScannerExample {
   public static void main(String args[]) throws Exception {
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter your name: ");
      String name = sc.next();
      System.out.println("Enter your date of birth (dd-MM-yyyy): ");
      String dob = sc.next();
      System.out.println("Enter your roll number: ");
      int rollNumber = sc.nextInt();
      System.out.println("Enter your percentage: ");
      float percent = sc.nextFloat();
      //从给定字符串获取 Date 对象
      Date date = new SimpleDateFormat("dd-MM-yyyy");
      LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
      //计算年龄
      Period period = Period.between(localDate, LocalDate.now());
      System.out.print("Hello "+name+" your current age is: ");
      System.out.print(period.getYears()+" years "+period.getMonths()+" and "+period.getDays()+" days");
      System.out.println();
      if(percent>=80){
         System.out.println("Your grade is: A");
      } else if(percent>=60 && percent<80) {
         System.out.println("Your grade is: B");
      }
      else if(percent>=40 && percent<60){
         System.out.println("Your grade is: C");
      } else {
         System.out.println("Your grade is: D");
      }
   }
}

输出

Enter your name:
Krishna
Enter your date of birth (dd-MM-yyyy):
26-09-1989
Enter your roll number:
1254
Enter your percentage:
83
Hello Krishna your current age is: 29 years 9 and 5 days
Your grade is: A

相关文章