国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java從控制臺讀入數據的幾種方法總結

2019-11-26 13:45:22
字體:
來源:轉載
供稿:網友

這里記錄Java中從控制臺讀入信息的幾種方式,已備后查!

(1)JDK 1.4(JDK 1.5和JDK 1.6也都兼容這種方法)

public class TestConsole1 {  public static void main(String[] args) {    String str = readDataFromConsole("Please input string:);    System.out.println("The information from console: + str);  }  /**   * Use InputStreamReader and System.in to read data from console   *    * @param prompt   *         * @return input string   */  private static String readDataFromConsole(String prompt) {    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));    String str = null;    try {      System.out.print(prompt);      str = br.readLine();    } catch (IOException e) {      e.printStackTrace();    }    return str;  }}

(2)JDK 1.5(利用Scanner進行讀取)

public class TestConsole2 {  public static void main(String[] args) {    String str = readDataFromConsole("Please input string:");    System.out.println("The information from console:" + str);  }  /**   * Use java.util.Scanner to read data from console   *    * @param prompt   *    * @return input string   */  private static String readDataFromConsole(String prompt) {    Scanner scanner = new Scanner(System.in);    System.out.print(prompt);    return scanner.nextLine();  }}

Scanner還可以很方便的掃描文件,讀取里面的信息并轉換成你要的類型,比如對“2 2.2 3.3 3.33 4.5 done”這樣的數據求和,見如下代碼:

public class TestConsole4 {  public static void main(String[] args) throws IOException {    FileWriter fw = new FileWriter("num.txt");    fw.write("2 2.2 3.3 3.33 4.5 done");    fw.close();    System.out.println("Sum is "+scanFileForSum("num.txt"));  }  public static double scanFileForSum(String fileName) throws IOException {    double sum = 0.0;    FileReader fr = null;    try {      fr = new FileReader(fileName);      Scanner scanner = new Scanner(fr);            while (scanner.hasNext()) {        if (scanner.hasNextDouble()) {          sum = sum + scanner.nextDouble();        } else {          String str = scanner.next();          if (str.equals("done")) {            break;          } else {            throw new RuntimeException("File Format is wrong!");          }        }      }    } catch (FileNotFoundException e) {      throw new RuntimeException("File " + fileName + " not found!");    } finally {      if (fr != null)        fr.close();    }    return sum;  }}

(3)JDK 1.6(利用java.io.Console進行讀取)

JDK6中提供了java.io.Console類專用來訪問基于字符的控制臺設備.

你的程序如果要與Windows下的cmd或者Linux下的Terminal交互,就可以用Console類代勞.(類似System.in和System.out)

但我們不總是能得到可用的Console, 一個JVM是否有可用的Console依賴于底層平臺和JVM如何被調用.

如果JVM是在交互式命令行(比如Windows的cmd)中啟動的,并且輸入輸出沒有重定向到另外的地方,那么就可以得到一個可用的Console實例。

在使用 IDE 的情況下,是無法獲取到Console實例的,原因在于在 IDE 的環境下,重新定向了標準輸入和輸出流,也是就是將系統控制臺上的輸入輸出重定向到了 IDE 的控制臺中

public class TestConsole3 {  public static void main(String[] args) {    String str = readDataFromConsole("Please input string:");    System.out.println("The information from console:" + str);  }  /**   * Use java.io.console to read data from console   *    * @param prompt   *    * @return input string   */  private static String readDataFromConsole(String prompt) {    Console console = System.console();    if (console == null) {      throw new IllegalStateException("Console is not available!");    }    return console.readLine(prompt);  }}

Console類還有個特色就是,專門對密碼(輸入無回顯)等安全字符,進行了處理。專門提供 readPassword()方法,具體應用見如下代碼:

public class TestConsole5 {     public static void main(String[] args) {      Console console = System.console();      if (console == null) {        throw new IllegalStateException("Console is not available!");      }            while(true){      String username = console.readLine("Username: ");      char[] password = console.readPassword("Password: ");      if (username.equals("Chris") && String.valueOf(password).equals("GoHead")) {       console.printf("Welcome to Java Application %1$s./n", username);       // 使用后應立即將數組清空,以減少其在內存中占用的時間,增強安全性        password = null;       System.exit(-1);      }       else {       console.printf("Invalid username or password./n");      }      }     }}

以上就是小編為大家帶來的Java從控制臺讀入數據的幾種方法總結的全部內容了,希望對大家有所幫助,多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 弋阳县| 安岳县| 工布江达县| 英吉沙县| 扎鲁特旗| 舟曲县| 象州县| 保靖县| 西青区| 疏附县| 青铜峡市| 原平市| 临江市| 乌审旗| 西青区| 峨山| 延庆县| 电白县| 通道| 修武县| 疏附县| 门源| 蒙城县| 那曲县| 唐海县| 呼和浩特市| 滕州市| 崇阳县| 湘潭市| 甘洛县| 阿荣旗| 三台县| 东阿县| 南靖县| 岳普湖县| 湖南省| 睢宁县| 海阳市| 鸡西市| 彰武县| 大石桥市|