程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java小例子 - 讀取控制台的用戶輸入

Java小例子 - 讀取控制台的用戶輸入

編輯:關於JAVA

想當年學 BASIC 的時候,獲取用戶輸入多簡單,就一個 input;後來學 C, 也挺簡單,一個 scanf();後來學 c++,同樣簡單,一個 cin <<;到了 Java 這裡,麻煩來了。

1、簡單的獲取用戶輸入

下面是一個基本的例子,包含解釋:

1.import java.io.BufferedReader;
2.import java.io.InputStreamReader;
3.import java.io.IOException;
4.
5.public class BasicInput {
6.
7.    public static void main(String[] args) {
8.        try {
9.            // 在 Java 當中,用戶輸入要通過 InputStream (輸入流)來獲

取。
10.            // System.in 就是系統的輸入流。缺省情況下這個輸入流連接

到控制台(命令行)。
11.            // InputStreamReader 就是用來讀取 InputStream 的類。
12.            InputStreamReader is_reader = new InputStreamReader

(System.in);
13.            
14.            // 通常使用 BufferedReader 來讀取 InputStream 中的字符

串內容。
15.            // BufferedReader 可以一次讀取一行。
16.            String str = new BufferedReader(is_reader).readLine();
17.            
18.            // 將讀取的字符串輸出到屏幕上。
19.            System.out.println("您輸入的是:" + str);
20.        } catch (IOException e) {
21.            e.printStackTrace();
22.        }
23.    }
24.}

看起來不少,實際上只有三行。下面將前面兩行提取出來,放到單獨的方法 中,就成了下面這個樣子(前面的 import 我就省掉了):

1.public class BasicInput {
2.
3.    public static void main(String[] args) {
4.        try {
5.            String str = readUserInput();
6.            System.out.println("您輸入的是:" + str);
7.        } catch (IOException e) {
8.            e.printStackTrace();
9.        }
10.    }
11.
12.    /**
13.     * 讀取用戶輸入
14.     *
15.     * @return 用戶輸入
16.     * @throws IOException 如果讀取失敗
17.     */
18.    private static String readUserInput() throws IOException {
19.        InputStreamReader is_reader = new InputStreamReader

(System.in);
20.        return new BufferedReader(is_reader).readLine();
21.    }
22.}

2、在讀取之前顯示提示文本

有時候需要在讀取前顯示一段文字。下面是繼續改造後的例子:

1.public class BasicInput {
2. 
3.    public static void main(String[] args) {
4.        try {
5.            // 先提示一段文字,然後等待用戶輸入
6.            String str = readUserInput("請輸入您的年齡:

");
7.            System.out.println("您輸入的是:" + str);
8.        } catch (IOException e) {
9.            e.printStackTrace();
10.        }
11.    }
12. 
13.    /**
14.     * 讀取用戶輸入
15.     *
16.     * @param prompt 提示文字
17.     * @return 用戶輸入
18.     * @throws IOException 如果讀取失敗
19.     */
20.    private static String readUserInput(String prompt) throws 

IOException {
21.        // 輸出提示文字
22.        System.out.print(prompt);
23.        InputStreamReader is_reader = new InputStreamReader

(System.in);
24.        return new BufferedReader(is_reader).readLine();
25.    }
26.}

3、不允許用戶輸入為空

這就要用到 while 循環,當用戶輸入為空(沒有輸入就直接回車)的時候重新 要求輸入。下面是將 readUserInput 方法改造後的例子:

1.     /**
2.     * 讀取用戶輸入
3.     *
4.     * @param prompt 提示文字
5.     * @return 用戶輸入
6.     * @throws IOException 如果讀取失敗
7.     */
8.    private static String readUserInput(String prompt) throws 

IOException {
9.        // 先定義接受用戶輸入的變量
10.        String result;
11. 
12.        do {
13.            // 輸出提示文字
14.            System.out.print(prompt);
15.            InputStreamReader is_reader = new InputStreamReader

(System.in);
16.            result = new BufferedReader(is_reader).readLine();
17.        } while (result.equals("")); // 當用戶輸入為空的

時候,反復提示要求用戶輸入
18. 
19.        return result;
20.    }

為了更加靈活的判斷,我們將 while 中的判斷語句提取成一個單獨的方法。 然後整個代碼變成這樣:

1.public class BasicInput {
2. 
3.    public static void main(String[] args) {
4.        try {
5.            // 先提示一段文字,然後等待用戶輸入
6.            String str = readUserInput("請輸入您的年齡:

");
7.            System.out.println("您輸入的是:" + str);
8.        } catch (IOException e) {
9.            e.printStackTrace();
10.        }
11.    }
12. 
13.    /**
14.     * 讀取用戶輸入
15.     *
16.     * @param prompt 提示文字
17.     * @return 用戶輸入
18.     * @throws IOException 如果讀取失敗
19.     */
20.    private static String readUserInput(String prompt) throws 

IOException {
21.        // 先定義接受用戶輸入的變量
22.        String result;
23. 
24.        do {
25.            // 輸出提示文字
26.            System.out.print(prompt);
27.            InputStreamReader is_reader = new InputStreamReader

(System.in);
28.            result = new BufferedReader(is_reader).readLine();
29.        } while (isInvalid(result)); // 當用戶輸入無效的時候,反復

提示要求用戶輸入
30. 
31.        return result;
32.    }
33. 
34.    /**
35.     * 檢查用戶輸入的內容是否無效
36.     *
37.     * @param str 用戶輸入的內容
38.     * @return 如果用戶輸入的內容無效,則返回 true
39.     */
40.    private static boolean isInvalid(String str) {
41.        return str.equals("");
42.    }
43.}

4、只允許用戶輸入數字

本例要求的是輸入用戶年齡。這是一個整數。為了避免得到非法的值,我們 需要進一步對內容進行判斷。因為之前我們將內容判斷這一步單獨提取出來,所 以我們只要修改 isInvalid 方法就行了。判斷一個字符串是不是數字,用正則 表達式是最簡單的。下面是修改後的 isInvalid 方法:

1.    private static boolean isInvalid(String str) {
2.        return str.equals("") || !str.matches

("\\d+");
3.    }

str.matches("\\d+") 用來判斷字符串是不是全是數字。

到這裡縱觀整個代碼,可以看得出來,Java 雖然在某些地方復雜,但只要稍 加整理,我們仍然可以得到邏輯結構合理的代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved