• <acronym id="kaxnc"><b id="kaxnc"></b></acronym>

    <delect id="kaxnc"></delect>

    <acronym id="kaxnc"><button id="kaxnc"><sup id="kaxnc"></sup></button></acronym>
      <acronym id="kaxnc"></acronym>
      1. <acronym id="kaxnc"></acronym>
        <delect id="kaxnc"><pre id="kaxnc"><big id="kaxnc"></big></pre></delect>
      2. 歡迎您訪問新華電腦學校官方網(wǎng)站!官網(wǎng)

        您的位置:首頁>新聞資訊>就業(yè)新聞

        在阿里筆試中拿了0分,竟是因為分不清楚Java輸入類nextLine與nex

        發(fā)布時間:2020-05-22  作者:未知 瀏覽量:117

        以前做算法題,都是實現(xiàn)一個方法,需要的參數(shù)會在方法參數(shù)中直接給出,而且需要的返回值直接在方法中 return 就好了。但是阿里的筆試,需要的參數(shù)居然要到輸入流中讀取,而且返回結果居然直接輸出到控制臺上。
        如果沒有見過這種套路的,當使用Java輸入類nextLine方法讀取輸入流中的字符串時,總會莫名其妙地少讀一部分!那在這里,讓我們新華的專業(yè)講師來給大家?guī)硪粓鰧I(yè)的分析。
         
        讀取一個數(shù)字
         
        既然我們要讀取輸入,肯定得用到 Scanner 類,這個類倒是挺簡單的,例如,我們需要讀取一個數(shù)字,可以這樣子設計程序。
         
        package test;
         
        import java.util.Scanner;
         
        public class HelloWorld {
         
        public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println("讀取到的數(shù)字是:" + i);
            }
        }
         
        我們隨意輸入一個數(shù)字 100,控制臺的輸出也證明了我們的程序可以讀取這個數(shù)字。
         
        好了,重點來了!讀取數(shù)字倒沒什么,讀取字符串會要了老命!讀取數(shù)據(jù)的時候如果一直嘗試使用nextLine這個方法來讀取字符串(如果我們不知道next這個方法時),nextLine讀出來的數(shù)據(jù)總是缺斤少兩!
         
        我們來還原一下現(xiàn)場,需求是這樣的,需要我們讀取一個數(shù)字,這個數(shù)字表示輸入字符串的數(shù)量,然后下面跟著的就是一系列需要讀入的字符串了,很多人在做這道題時想都沒想,大筆一揮,寫下如下代碼:
         
        package test;
         
        import java.util.Scanner;
         
        public class HelloWorld {
         
        public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();//讀取的字符串數(shù)量
        int index = 0;
        String[] array = new String [i];//存放讀取的字符串
        while(index < i) {
        array[index++] = sc.nextLine();
        }
        for (String str : array) {//輸出讀取的字符串
        System.out.println("輸入的字符串:" + str);
        }
            }
        }
         
        理想很美好,現(xiàn)實很骨感,寫代碼時光芒萬丈,檢查時卻怨天尤人。這樣的代碼永遠無法讀取最后一行輸入的字符串,這是為啥呢?
         
        因為nextLine可以接收空格或者tab鍵,其輸入以enter鍵結束。
         
        程序在通過 nextInt 方法讀取數(shù)字之后,會留下一個enter鍵,這個enter鍵會被第一個執(zhí)行的nextLine函數(shù)接收,這導致我們能夠讀取的數(shù)據(jù)永遠少一行(nextLine少執(zhí)行一次),同時也能解釋為什么字符串數(shù)組第一個元素為空。
         
        這個問題怎么解決呢?Java 輸入類讀取字符串的函數(shù)并非只有nextLine,通過next也能實現(xiàn)類似的功能,只不過next與nextLine不同,next不會接收回車符,tab或者空格鍵。在我們使用 nextLine時,需要注意前面是否有enter鍵,如果有,就會被nextLine吸收,從而造成bug!
         
        既然明白了nextLine與next的原理,解決問題就變得簡單了,將讀取字符串的函數(shù)由nextLine改為next便可,這樣就不會吸收nextInt留下的enter鍵了。改進過的程序如下:
         
        package test;
         
        import java.util.Scanner;
         
        public class HelloWorld {
         
        public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();//讀取的字符串數(shù)量
        int index = 0;
        String[] array = new String [i];//存放讀取的字符串
        while(index < i) {
        array[index++] = sc.next();
        }
        for (String str : array) {//輸出讀取的字符串
        System.out.println("輸入的字符串:" + str);
        }
            }
        }
         
        總結
         
        最后我們再來總結一下nextLine與next兩個方法的區(qū)別:
         
        next不會接收回車符,tab或者空格鍵,在接收有效數(shù)據(jù)之前會忽略這些符號,若已經(jīng)讀取了有效數(shù)據(jù),遇到這些符號會直接退出,而nextLine 可以接收空格或者tab鍵,其輸入以 enter 鍵結束。
         
        如果也想像一名資深程序員一樣解決如此專業(yè)的問題,快到石家莊新華電腦學校來學習吧!

        常見問題

        熱招專業(yè)

        在線報名

        AI+游戲動漫與影視制作

        電話:400-900-8780

        地址:河北省石家莊市橋西區(qū)南二環(huán)西路199號,南二環(huán)與紅旗大街交叉口西行300米路北

        冀ICP備11012044號 | 版權所有:石家莊新華電腦學校

        工信部備案管理系統(tǒng)網(wǎng)址:https://beian.miit.gov.cn/

        • 官方快手賬號

        • 官方視頻號

        • 官方公眾號

        網(wǎng)站聲明:任何企業(yè)或者個人以任何形式復制或傳遞本網(wǎng)站所載述的域名商標、文字、視像及聲音內(nèi)容、圖形及圖像應當注明來源于本網(wǎng)站

        视频二区丝袜国产欧美日韩,国产a毛片精品视频日日夜,中文人妻中出无码视频,国产黄片一区免费观看
      3. <acronym id="kaxnc"><b id="kaxnc"></b></acronym>

        <delect id="kaxnc"></delect>

        <acronym id="kaxnc"><button id="kaxnc"><sup id="kaxnc"></sup></button></acronym>
          <acronym id="kaxnc"></acronym>
          1. <acronym id="kaxnc"></acronym>
            <delect id="kaxnc"><pre id="kaxnc"><big id="kaxnc"></big></pre></delect>