亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java 字符終端上獲取輸入三種的方式分享

2019-11-26 15:53:06
字體:
來源:轉載
供稿:網友

在Java 字符終端上獲取輸入有三種方式:

1、java.lang.System.in (目前JDK版本均支持)
2、java.util.Scanner (JDK版本>=1.5)
3、java.io.Console(JDK版本>=1.6),特色:能不回顯密碼字符

參考:
這里記錄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進行讀?。?BR>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"); 
            } 
            } 
          } 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久免费精品| 中文字幕成人精品久久不卡| 亚洲人午夜精品免费| 亚洲精品xxx| 久久精品福利视频| 亚洲综合中文字幕在线| 日本精品久久电影| 亚洲国产黄色片| 欧美性受xxxx白人性爽| 国产精品爽爽爽| 热re91久久精品国99热蜜臀| 欧美丝袜一区二区| 欧美日韩精品在线播放| 欧美日韩激情网| 久久精品人人做人人爽| 精品国内产的精品视频在线观看| 久久久久久久久久国产精品| 2019日本中文字幕| 久久久久久欧美| 久久免费精品日本久久中文字幕| 超碰91人人草人人干| 亚洲成人性视频| 国产精品老女人精品视频| 亚洲www永久成人夜色| 亚洲欧美日韩国产中文专区| 国产亚洲精品美女| 欧美国产日韩xxxxx| 亚洲成人xxx| 日韩在线免费视频| 日韩中文综合网| 在线亚洲午夜片av大片| y97精品国产97久久久久久| 日韩电影在线观看免费| 亚洲精品久久久久国产| 亚洲天堂第二页| 日韩成人网免费视频| 日韩欧美精品网站| 欧美高清不卡在线| 国产精品欧美一区二区三区奶水| 久久伊人精品一区二区三区| 成人妇女免费播放久久久| 国产精品久久久久77777| 国产成人精品免费视频| 国产精品永久在线| 日韩极品精品视频免费观看| 亚洲剧情一区二区| 国产亚洲精品日韩| 精品久久久久久久久久久久久| 国产成人综合一区二区三区| 欧美精品少妇videofree| 亚洲视频在线观看网站| 日本一区二三区好的精华液| 午夜精品www| 欧美色videos| 国产有码一区二区| 亚洲午夜精品久久久久久性色| 久久久精品久久| 久久久电影免费观看完整版| 91热精品视频| 亚洲成人黄色网| 精品亚洲一区二区三区在线观看| 国产一区二区三区日韩欧美| 性色av一区二区三区红粉影视| 亚洲激情免费观看| 91在线观看欧美日韩| 久久理论片午夜琪琪电影网| 亚洲第一在线视频| 91在线观看免费高清| 久久伊人色综合| 热99精品里视频精品| 亚洲一区二区免费| 国产免费一区视频观看免费| 国产成人精品综合| 国产欧美一区二区三区久久| 欧美日韩国产精品一区| 亚洲国产天堂久久国产91| 日本久久中文字幕| 8090理伦午夜在线电影| 亚洲综合成人婷婷小说| 欧日韩在线观看| 91美女片黄在线观看游戏| 日日噜噜噜夜夜爽亚洲精品| 亚洲在线www| 亚洲一区二区三区成人在线视频精品| 亚洲电影免费在线观看| 国产精品男女猛烈高潮激情| 久久久久久久久久av| 国产精品免费一区二区三区都可以| 日产精品99久久久久久| 亚洲国产成人精品电影| 国产精品video| 亚洲精品videossex少妇| 黄网动漫久久久| 在线电影欧美日韩一区二区私密| 国产精品成人播放| 亚洲国产精品免费| 日本久久亚洲电影| 欧美激情中文字幕在线| 91黑丝在线观看| 欧美中文字幕视频| 亚洲午夜小视频| 欧美性受xxxx黑人猛交| 91丨九色丨国产在线| 日韩av高清不卡| 亚洲性线免费观看视频成熟| 日韩欧美精品网址| 中文在线资源观看视频网站免费不卡| 亚洲激情第一页| 97国产在线观看| 欧美一级视频免费在线观看| 欧美成人午夜视频| 国产精品丝袜高跟| 国产精品一区二区三区久久久| 亚洲伦理中文字幕| 91影视免费在线观看| 日本精品性网站在线观看| 日韩久久精品电影| 亚洲japanese制服美女| 国产欧美一区二区三区久久| 韩国v欧美v日本v亚洲| 日韩av免费观影| 精品国产一区二区三区四区在线观看| 欧美一区二区大胆人体摄影专业网站| 一本色道久久88综合日韩精品| 国产噜噜噜噜噜久久久久久久久| 日韩欧美在线视频免费观看| 色哟哟亚洲精品一区二区| 亚洲视频自拍偷拍| 欧美亚洲激情视频| 精品国产一区二区三区久久狼5月| 国产免费一区视频观看免费| 欧美精品一区二区免费| 欧美国产日产韩国视频| 欧美一级淫片播放口| 一本色道久久88综合日韩精品| 欧美激情欧美激情在线五月| 欧美在线视频观看| 亚洲欧美日韩视频一区| 欧美精品一区二区免费| 亚洲精品福利在线| 亚洲激情在线观看| 国产精品情侣自拍| 国产福利视频一区| 日韩精品极品毛片系列视频| 国产亚洲欧美日韩美女| 亚洲视频免费一区| 日韩精品极品视频免费观看| 91麻豆桃色免费看| 日韩精品视频观看| 911国产网站尤物在线观看| 成人黄色在线播放| 狠狠久久五月精品中文字幕| 伊人久久大香线蕉av一区二区| 欧美伦理91i| 国产精品免费一区豆花| 最新的欧美黄色| 高清欧美性猛交xxxx| 国产一区二区黄| 国产亚洲欧洲高清一区| 欧美激情亚洲激情| 国产做受69高潮| 国产精品劲爆视频| 国产精品成人av性教育| 亚洲精品91美女久久久久久久|