Java獲取控制臺(tái)輸入的兩種方法小結(jié)
Java獲取控制臺(tái)輸入的方法
在學(xué)習(xí)網(wǎng)絡(luò)編程中,有需要從控制臺(tái)輸入數(shù)據(jù),進(jìn)行兩個(gè)線程之間的通信,其中,涉及到了讀取控制臺(tái)輸入的兩種不同的操作,筆者在這里進(jìn)行記錄,以供大家分享。
方法一、InputStreamReader
- 本身只能單個(gè)字符地讀取數(shù)據(jù)
- 通過BufferedStreamReader包裝后,存在緩存,支持整行整行地讀取數(shù)據(jù)
- 只能讀取字符/字符串,如想獲取其他類型的數(shù)據(jù),仍需要進(jìn)行類型轉(zhuǎn)換
檢測實(shí)例如下:
? ? public static User getUser2() throws IOException { ? ? ? ? BufferedReader br = new ? ? ? ? ? ? ? ? BufferedReader(new InputStreamReader(System.in)); ? ? ? ? System.out.println("請輸入賬號(hào)"); ? ? ? ? String username = br.readLine(); ? ? ? ? System.out.println("請輸入密碼"); ? ? ? ? String password = br.readLine(); ? ? ? ? br.close(); ? ? ? ? return new User(username,password); ? ? }
方法二、Scanner
在獲取控制臺(tái)輸入的方法中,創(chuàng)建Scanner對象來獲取是最佳的方法,其有以下優(yōu)勢:
- 可以獲取各種類型的數(shù)據(jù),如String、Int、Float等,且不需要進(jìn)行轉(zhuǎn)換
- 支持諸多的文本掃描內(nèi)容,如hasNextLine()方法可以檢測是否存在下一行數(shù)據(jù)等
檢測實(shí)例如下:
? ? public static User getUser(){ ? ? ? ? Scanner scanner = new Scanner(System.in); ? ? ? ? System.out.println("請輸入賬號(hào)"); ? ? ? ? String username = scanner.nextLine(); ? ? ? ? System.out.println("請輸入密碼"); ? ? ? ? String password = scanner.nextLine(); ? ? ? ? return new User(username,password); ? ? }
Java接收控制臺(tái)輸入
1.接收整數(shù)類型輸入
public static void main(String[] args) { java.util.Scanner sc=new Scanner(System.in); ?? ??? ?System.out.println("請輸入將要計(jì)算階乘的整數(shù)n:"); ?? ??? ?int n=sc.nextInt(); //接收整數(shù)類型輸入 ?? ??? ?sc.close(); }
2.接收字符串類型輸入
public static void main(String[] args) { ?? ??? ?java.util.Scanner sc=new java.util.Scanner(System.in); ?? ??? ?System.out.println("請輸入需要判斷是否為十進(jìn)制的數(shù)字"); ?? ??? ?String n=sc.nextLine();//接收字符串 ?? ??? ?sc.close(); }
3.接收單個(gè)字符輸入
法一》直接獲取一個(gè)字符
?public static void main(String[] args) throws Exception //注意拋出異常? { ?? ??? ?java.util.Scanner sc=new java.util.Scanner(System.in); ?? ??? ?System.out.println("請輸入一個(gè)字符:"); ?? ??? ? ?? ??? ? char n=(char)System.in.read(); //直接獲取一個(gè)字符 ? ? ? ? ?sc.close(); }
法二》先接收一個(gè)字符串,再接收其第一個(gè)字符
public static void main(String[] args) ?//注意 throws Exception可以不寫 { ?? ??? ?java.util.Scanner sc=new java.util.Scanner(System.in); ?? ??? ?System.out.println("請輸入一個(gè)字符:"); ?? ??? ?char n=sc.next().charAt(0);//先從控制臺(tái)接收字符串,再接收它的第一個(gè)字符 ?? ??? ?sc.close(); }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot關(guān)于容器啟動(dòng)事件總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于springboot容器啟動(dòng)事件相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10java自定義注解實(shí)現(xiàn)前后臺(tái)參數(shù)校驗(yàn)的實(shí)例
下面小編就為大家?guī)硪黄猨ava自定義注解實(shí)現(xiàn)前后臺(tái)參數(shù)校驗(yàn)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-11-11