1. 使用Scanner讀取字符和字符串
3 /** 4 * Created by SheepCore on 2020-2-26 5 */ 7 public class Main { 8 public static void main(String[] args) { 9 Scanner scan = new Scanner(System.in); //聲明一個Scanner對象,初始輸入流為控制台 10 String name = scan.nextLine(); //讀取鍵盤輸入字符串(包括空格、Tab,不包括最后的Enter) 11 String id = scan.nextLine(); 12 int age; 13 float height; 14 double weight; 15 age = scan.nextInt(); //讀取下一個int(光標停在本行的空格之前) 16 height = scan.nextFloat(); //讀取下一個float 17 weight = scan.nextDouble(); //讀取下一個double 18 19 System.out.println("name: " + name + "\nid: " + id); 20 System.out.println("age: " + age + " height: " + height + " weight: " + weight); 21 } 22 }
sheepcore 11001100 22 178.3 68.5
name: sheepcore id: 11001100 age: 22 height: 178.3 weight: 68.5
2. 使用System.in.read()讀取單個字符
如果只要讀取一個字符可以通過read()方法實現。
/** * Created by SheepCore on 2020-2-26 */ public class Main { public static void main(String[] args) { char read; System.out.print("Enter a char: "); try { //如果輸入有誤或者沒有輸入則會拋出IOException,所以這里需要在try_catch_block中捕獲 read = (char) System.in.read(); //通過控制台讀取一個字符 System.out.println(read); } catch(Exception e) { e.printStackTrace(); //打印錯誤信息 } } }
3. 通過BufferedReader以緩沖方式讀取字符串
這種方法可以讀取一行中的空格(space and tab),而Scanner讀取時按空格分隔,空格后面無法讀取,如果想要讀取含有空格的字符串就需要使用這種方法。
1 /** 2 * Created by SheepCore on 2020-2-26 3 * 4 * how to deal with BufferedReader 5 * try and catch the IOException 6 * read a line with readLine() 7 */ 8 public class Main { 9 public static void main(String[] args) { 10 String name; 11 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 12 System.out.print("What's your name? "); 13 try { 14 name = br.readLine(); 15 System.out.println("My name is " + name + "."); 16 } catch(Exception e) { 17 e.printStackTrace(); 18 } 19 } 20 }
What's your name? Sheep Core
My name is Sheep Core.
4.Summary:
這三種方法幾乎可以應對所有的控制台輸入,如果想多行輸入,只需使用循環控制語句多次輸入就可以了!掌握這些就可以開啟刷題之旅了! Let's go get LeetCode!
水滴石穿,笨鳥先飛!