Java 中的 Scanner 類是什麼?它在哪一年引入的?
在 Java 1.5 之前,為了從使用者處讀取資料,程式設計師依賴於字元流類和位元組流類。
從 Java 1.5 開始引入了 Scanner 類。此類接受 File、InputStream、Path 和 String 物件,使用正則表示式以 token 為單位讀取所有原始資料型別和字串(從給定的源)。
預設情況下,空格被視為分隔符(將資料分解成 token)。
要從源讀取各種資料型別,可以使用此類提供的 nextXXX() 方法,即:nextInt()、nextShort()、nextFloat()、nextLong()、nextBigDecimal()、nextBigInteger()、nextLong()、nextShort()、nextDouble()、nextByte()、nextFloat()、next()。
示例 − 從鍵盤讀取資料
以下 Java 程式從使用者處讀取姓名、出生日期、學號和百分比,並打印出他的年齡和年級。在此,我們使用 Scanner 類的 netXXX() 方法讀取資料。
示例
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(); //Getting Date object from given String Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dob); LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); //Calculating age 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
廣告