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)換
檢測(cè)實(shí)例如下:
? ? public static User getUser2() throws IOException {
? ? ? ? BufferedReader br = new
? ? ? ? ? ? ? ? BufferedReader(new InputStreamReader(System.in));
? ? ? ? System.out.println("請(qǐng)輸入賬號(hào)");
? ? ? ? String username = br.readLine();
? ? ? ? System.out.println("請(qǐng)輸入密碼");
? ? ? ? String password = br.readLine();
? ? ? ? br.close();
? ? ? ? return new User(username,password);
? ? }方法二、Scanner
在獲取控制臺(tái)輸入的方法中,創(chuàng)建Scanner對(duì)象來獲取是最佳的方法,其有以下優(yōu)勢(shì):
- 可以獲取各種類型的數(shù)據(jù),如String、Int、Float等,且不需要進(jìn)行轉(zhuǎn)換
- 支持諸多的文本掃描內(nèi)容,如hasNextLine()方法可以檢測(cè)是否存在下一行數(shù)據(jù)等
檢測(cè)實(shí)例如下:
? ? public static User getUser(){
? ? ? ? Scanner scanner = new Scanner(System.in);
? ? ? ? System.out.println("請(qǐng)輸入賬號(hào)");
? ? ? ? String username = scanner.nextLine();
? ? ? ? System.out.println("請(qǐng)輸入密碼");
? ? ? ? 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("請(qǐng)輸入將要計(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("請(qǐng)輸入需要判斷是否為十進(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("請(qǐng)輸入一個(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("請(qǐng)輸入一個(gè)字符:");
?? ??? ?char n=sc.next().charAt(0);//先從控制臺(tái)接收字符串,再接收它的第一個(gè)字符
?? ??? ?sc.close();
}以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)之Thymeleaf的簡(jiǎn)單使用
這篇文章主要介紹了Java基礎(chǔ)之Thymeleaf的簡(jiǎn)單使用,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
springboot關(guān)于容器啟動(dòng)事件總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于springboot容器啟動(dòng)事件相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-10-10
java自定義注解實(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

