AJPFX簡述Scanner類的特點

来源:https://www.cnblogs.com/AJPFX/archive/2019/05/19/10891227.html
-Advertisement-
Play Games

hasNextInt() :判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個字元串,則可以省略Xxx nextInt(): 獲取下一個輸入項。Xxx的含義和上個方法中的Xxx相同,預設情況下,Scanner使用空格,回車等作為分隔符 public stat ...


       hasNextInt() :判斷是否還有下一個輸入項,其中Xxx可以是Int,Double等。如果需要判斷是否包含下一個字元串,則可以省略Xxx
        nextInt(): 獲取下一個輸入項。Xxx的含義和上個方法中的Xxx相同,預設情況下,Scanner使用空格,回車等作為分隔符
                
                public static void main(String[] args) {
                        Scanner sc = new Scanner(System.in);                //創建鍵盤錄入對象
                        if(sc.hasNextInt()) {                                //判斷鍵盤錄入的是否是int類型的數據
                                int i = sc.nextInt();                        //鍵盤錄入的數據存儲在i中
                                System.out.println(i);
                        }else {
                                System.out.println("輸入的類型錯誤");
                        }
        
                }
        
        bug問題:先用nextInt()接收int類型,再用nextLine()接收字元串的時候,會導致nextLine() 直接把回車接收到了, nextLine 不能繼續接收字元串了
                1)先獲取一個數值後,再創建一個新的鍵盤錄入對象獲取字元串。
                2)把所有的數據都先按照字元串獲取,然後要什麼,你就對應的轉換為什麼。(後面講)
                出現問題代碼:
                        Scanner sc = new Scanner(System.in);
                        System.out.println("請輸入第一個整數:");
                        int i = sc.nextInt();                                //先用nextInt()接收int類型
                        System.out.println("請輸入第二個字元串:");
                        String line2 = sc.nextLine();                        //再用nextLine()接收字元串
                        System.out.println("i = " + i + ", line2 = " + line2);        //line2不等著你去接收 就執行了這句輸出語句
                為什麼出現問題呢?
                        nextInt()是鍵盤錄入整數的方法,當我們錄入10的時候
                        其實在鍵盤上錄入的是10和\r\n,nextInt()方法只獲取10就結束了
                        nextLine()是鍵盤錄入字元串的方法,可以接收任意類型,但是他憑什麼能獲取一行呢?
                        通過\r\n,只要遇到\r\n就證明一行結束
                解決:①
                        Scanner sc = new Scanner(System.in);
                        System.out.println("請輸入第一個整數:");
                        int i = sc.nextInt();                                //先用nextInt()接收int類型
                        System.out.println("請輸入第二個字元串:");        
                        Scanner sc2 = new Scanner(System.in);                //再創建一個新的鍵盤錄入對象
                        String line = sc2.nextLine();                        //再用新的鍵盤錄入對象的nextLine()接收字元串
                        System.out.println(i);
                        System.out.println(line);

                      ②(下麵這種方案 明天就講 我先寫在這裡 不懂的話 明天學了就明白了)
                        Scanner sc = new Scanner(System.in);
                        System.out.println("請輸入第一個整數:");
                        String lin = sc2.nextLine();                        //先用nextLine()接收一個數字型的字元串  比如 "100"
                        int i = Integer.parseInt(lin);
                        System.out.println("請輸入第二個字元串:");                
                        String line = sc2.nextLine();                        //再用新的鍵盤錄入對象的nextLine()接收字元串
                        System.out.println(i);
                        System.out.println(line);


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 進行JavaWeb開發,我們總共需要5個步驟:JDK的安裝與配置;Tomcat的安裝;EclipseEE的安裝與配置;創建工程;編寫代碼並運行。安裝的三個軟體在版本和適用構架上要一致。當JDK是32位時,Tomcat和EclipseEE也都必須是32位的軟體。在版本的選擇上JDK8版本可以使用Tom... ...
  • Map是雙列集合的根介面,用於存儲具有映射關係的數據。 根據key來區分每一項、獲取對應的value,所以key不能重覆。 key、value都可以是任意類型的數據。 Map提供了一個內部類Entry用來封裝鍵值對,一個鍵值對就是一個Entry實例。 Map的常用方法(所有子類都可以直接使用): v ...
  • 現象: 報錯:Exception in thread "main" com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 解決辦法: 更換 mysql-connector-java-8.0. ...
  • 一、單體架構的問題 微服務為什麼會出現?在學習Springboot的時候知道Springboot極大的簡化了我們的開發,我們可以快速的進行業務開發,Springboot單體應用在項目的開發初期能夠滿足我們需求,這種單體架構優點非常的明顯: 容易測試:本地就可以起完整的系統,不需要外部依賴。 容易開發 ...
  • 在Kinect for windows SDK2.0中,獲取並處理數據源介面步驟如下: Sensor -> Source -> Reader -> Frame -> Data (一)SensorIKinectSensor *pSensor=nullptr; //定義類指針GetDefaultKine ...
  • UDP協議: 1、python中基於udp協議的客戶端與服務端通信簡單過程實現 2、udp協議的一些特點(與tcp協議的比較) 3、利用socketserver模塊實現udp傳輸協議的併發通信 一、UDP協議:OSI七層協議中的傳輸協議的一種(另外一種tcp協議),他們都是一種埠協議 與TCP協議 ...
  • List集合有序、元素可重覆。以元素的添加順序作為集合的排列順序,用下標索引集合中的元素。 List因為使用下標索引元素,所以元素可重覆。Set使用元素本身來索引,所以元素不能重覆。 List的繼承關係: List繼承了Collection的所有方法,也有自身的一些方法(下標操作): void ad ...
  • 1.什麼是列表? 列表是由一組按特定順序排列的元素組成。 2.如何表示? 在Python中用方括弧([ ])來表示列表。慄子如下: 控制台列印如下: 沒錯,它將列印列表的內部表示,包括方括弧。 3.如何去訪問列表元素? console(控制台): 所以說訪問列表的元素,可以在列表名後加方括弧,方括弧 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...