最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Scanner類基礎(chǔ)使用、可能遇到的問(wèn)題及注意事項(xiàng)

 更新時(shí)間:2025年04月08日 09:39:00   作者:magic?245  
Scanner類是一個(gè)用于Scanner指的是java.util包下的Scanner類,可以接收控制臺(tái)輸入的數(shù)據(jù),這篇文章主要介紹了Java中Scanner類基礎(chǔ)使用、可能遇到的問(wèn)題及注意事項(xiàng)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、Scanner 類概述

Scanner 類是 Java 中用于獲取用戶輸入的一個(gè)實(shí)用類,它位于 java.util 包下。

通過(guò) Scanner 類,可以方便地從多種輸入源(比如標(biāo)準(zhǔn)輸入流,也就是鍵盤輸入,或者文件等)讀取不同類型的數(shù)據(jù),例如整數(shù)、小數(shù)、字符串等,大大簡(jiǎn)化了輸入操作相關(guān)的編程工作。

二、Scanner 類的創(chuàng)建

在使用 Scanner 類之前,需要先創(chuàng)建它的對(duì)象。如果要從標(biāo)準(zhǔn)輸入(鍵盤)讀取數(shù)據(jù),創(chuàng)建示例代碼如下:

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 后續(xù)可使用該scanner對(duì)象進(jìn)行輸入讀取操作
    }
}

這里通過(guò) new Scanner(System.in) 創(chuàng)建了一個(gè) Scanner 對(duì)象,System.in 表示標(biāo)準(zhǔn)輸入流,意味著后續(xù)操作將從鍵盤獲取輸入內(nèi)容。

三、常用方法及讀取不同類型數(shù)據(jù)

1.讀取整數(shù)

使用 nextInt() 方法可以讀取用戶輸入的整數(shù),示例代碼如下:

import java.util.Scanner;

public class ReadInt {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
        int num = scanner.nextInt();//程序執(zhí)行到這里就會(huì)停下來(lái),等待鍵盤的輸入。
                                    //鍵盤如果沒(méi)有輸入,這里就會(huì)一直卡著
            //直到用戶輸入了內(nèi)容之后,敲回車,這行代碼就執(zhí)行結(jié)束了
             //這樣就完成了數(shù)據(jù)從控制臺(tái)到內(nèi)存

        System.out.println("你輸入的整數(shù)是: " + num);
        scanner.close();
    }
}

這里提示用戶輸入整數(shù)后,調(diào)用 nextInt() 方法獲取輸入并賦值給 int 類型的變量 num,最后輸出展示讀取到的整數(shù)內(nèi)容。需要注意的是,在讀取完成后,如果不再需要使用該 Scanner 對(duì)象,最好調(diào)用 scanner.close() 方法關(guān)閉它,以釋放相關(guān)資源。

注意:針對(duì)nextInt()方法來(lái)說(shuō),只能接收整數(shù)數(shù)字。輸入其他的字符串會(huì)報(bào)錯(cuò)。

2.讀取浮點(diǎn)數(shù)(小數(shù))

若要讀取浮點(diǎn)數(shù),可以使用 nextFloat() 方法(讀取單精度浮點(diǎn)數(shù)) 或者 nextDouble() 方法(讀取雙精度浮點(diǎn)數(shù)),示例代碼如下:

import java.util.Scanner;

public class ReadFloat {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)單精度浮點(diǎn)數(shù):");
        float fNum = scanner.nextFloat();
        System.out.println("你輸入的單精度浮點(diǎn)數(shù)是: " + fNum);

        System.out.println("請(qǐng)輸入一個(gè)雙精度浮點(diǎn)數(shù):");
        double dNum = scanner.nextDouble();
        System.out.println("你輸入的雙精度浮點(diǎn)數(shù)是: " + dNum);

        scanner.close();
    }
}

上述代碼分別演示了讀取單精度和雙精度浮點(diǎn)數(shù)的過(guò)程,按照提示輸入相應(yīng)類型的小數(shù),就能通過(guò)對(duì)應(yīng)方法獲取并輸出展示。

3.讀取字符串

讀取字符串有兩種常用方式,一種是 next() 方法,一種是 nextLine() 方法。

(1).next() 方法: 它讀取輸入的下一個(gè)單詞(以空格、制表符等空白字符作為分隔符)

細(xì)節(jié):從鍵盤上接收一個(gè)字符串,但是接收的是第一個(gè)空格之前的內(nèi)容

示例代碼1:

import java.util.Scanner;

public class ReadStringNext {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一些單詞(以空格分隔):");
        String word = scanner.next();
        System.out.println("你輸入的單詞是: " + word);
        scanner.close();
    }
}

輸入多個(gè)單詞時(shí),它只會(huì)獲取第一個(gè)單詞并返回。

示例代碼2:

import java.util.Scanner;
public class scannerTest {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        String username=s.next();
        System.out.println(username);
    }
}

(2).nextLine() 方法:

該方法讀取輸入的一整行內(nèi)容,示例代碼:

import java.util.Scanner;

public class ReadStringNextLine {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一行文字:");
        String line = scanner.nextLine();
        System.out.println("你輸入的文字內(nèi)容是: " + line);
        scanner.close();
    }
}

它會(huì)獲取從當(dāng)前位置到行尾的所有字符,更適合讀取完整的語(yǔ)句等情況。

注意:從鍵盤上接收一個(gè)字符串,但是接收的是第一個(gè)換行符\n之前的內(nèi)容

可能遇到的問(wèn)題及注意事項(xiàng)

1.輸入不匹配異常

如果用戶輸入的數(shù)據(jù)類型和期望讀取的數(shù)據(jù)類型不一致,例如:期望讀取整數(shù),但用戶輸入了字母等非數(shù)字內(nèi)容,會(huì)拋出 InputMismatchException 異常。所以在實(shí)際應(yīng)用中,可能需要添加異常處理代碼來(lái)讓程序更健壯,示例如下:

import java.util.InputMismatchException;
import java.util.Scanner;

public class ExceptionHandle {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
            int num = scanner.nextInt();
            System.out.println("你輸入的整數(shù)是: " + num);
        } catch (InputMismatchException e) {
            System.out.println("輸入的數(shù)據(jù)類型不正確,請(qǐng)重新輸入整數(shù)!");
        } finally {
            scanner.close();
        }
    }
}

這里使用 try-catch 語(yǔ)句塊捕獲可能出現(xiàn)的輸入類型不匹配異常,并在 catch 塊中給出相應(yīng)提示,無(wú)論是否出現(xiàn)異常,最終都會(huì)在 finally 塊中關(guān)閉 Scanner 對(duì)象。

2.nextLine() 方法使用的坑

由于nextInt()只讀取整數(shù),不讀取后續(xù)的換行符,這會(huì)導(dǎo)致nextLine()在下一次調(diào)用時(shí)直接讀取空字符串。解決方法是使用nextLine()獲取整數(shù)后的換行符,避免空字符導(dǎo)致的跳過(guò)輸入現(xiàn)象。

import java.util.Scanner;
public class scannerTest {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        String username=s.next(); //無(wú)論是next(),還是nextInt(),nextDouble()這幾個(gè)方法接收的是第一個(gè)空格之前的內(nèi)容
                         //而對(duì)于 son依舊留在緩存中,其在緩存的格式為 son\r(回車符)
        System.out.println(username);

        String position=s.nextLine();//執(zhí)行到這一行時(shí),nextLine回去緩存讀內(nèi)容,而讀到\r時(shí)就結(jié)束了
                                     //即讀取了 son
                                     //所以這一行的運(yùn)行,用戶無(wú)法輸入東西
        System.out.println(position);

        String name =s.nextLine();
        System.out.println(name);
    }
}

運(yùn)行結(jié)果:

當(dāng)在調(diào)用 nextInt() 或者其他讀取基本類型的方法(如 nextFloat() 等)后緊接著調(diào)用 nextLine() 方法時(shí),可能會(huì)出現(xiàn)問(wèn)題。因?yàn)?nextInt() 等方法讀取數(shù)據(jù)后,留下的換行符(回車鍵對(duì)應(yīng)的字符)會(huì)被 nextLine() 當(dāng)作輸入內(nèi)容讀取,導(dǎo)致 nextLine() 似乎 “跳過(guò)” 了用戶的輸入。解決辦法通常是在調(diào)用 nextLine() 之前,先額外調(diào)用一次 nextLine() 來(lái)消耗掉前面留下的換行符,示例如下:

import java.util.Scanner;

public class NextLineIssue {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入一個(gè)整數(shù):");
        int num = scanner.nextInt();
        scanner.nextLine(); // 消耗掉換行符

        System.out.println("請(qǐng)輸入一行文字:");
        String line = scanner.nextLine();
        System.out.println("你輸入的文字內(nèi)容是: " + line);

        scanner.close();
    }
}

總之,Scanner 類在 Java 中是很常用的用于處理輸入的類,掌握好它的使用方法以及注意相關(guān)問(wèn)題,能更好地實(shí)現(xiàn)具有交互性的 Java 程序。

總結(jié)

到此這篇關(guān)于Java中Scanner類基礎(chǔ)使用、可能遇到的問(wèn)題及注意事項(xiàng)的文章就介紹到這了,更多相關(guān)Java基礎(chǔ)Scanner類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合Shiro思路(最新超詳細(xì))

    SpringBoot整合Shiro思路(最新超詳細(xì))

    這篇文章主要介紹了SpringBoot整合Shiro思路(最新超詳細(xì)),本文內(nèi)容比較長(zhǎng),通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 詳解java實(shí)現(xiàn)遍歷二叉樹(shù)的三種情況

    詳解java實(shí)現(xiàn)遍歷二叉樹(shù)的三種情況

    這篇文章主要介紹了java實(shí)現(xiàn)遍歷二叉樹(shù)的三種情況,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Java之單鏈表問(wèn)題解決案例講解

    Java之單鏈表問(wèn)題解決案例講解

    這篇文章主要介紹了Java之單鏈表問(wèn)題解決案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • java判斷map是否有key的常用方法

    java判斷map是否有key的常用方法

    這篇文章主要為大家詳細(xì)介紹了java中判斷map是否有key的常用方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解
    2025-12-12
  • 初探Java內(nèi)部類的使用

    初探Java內(nèi)部類的使用

    Java內(nèi)部類一般可以分為以下三種:成員內(nèi)部類、靜態(tài)內(nèi)部類和匿名內(nèi)部類。這篇文章主要帶大家初探一下Java內(nèi)部類的使用,感興趣的可以了解一下
    2022-09-09
  • SpringBoot實(shí)現(xiàn)api加密的示例代碼

    SpringBoot實(shí)現(xiàn)api加密的示例代碼

    在項(xiàng)目中,為了保證數(shù)據(jù)的安全,我們常常會(huì)對(duì)傳遞的數(shù)據(jù)進(jìn)行加密。本文主要介紹了SpringBoot實(shí)現(xiàn)api加密的示例代碼,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot 整合 Shiro 密碼登錄的實(shí)現(xiàn)代碼

    SpringBoot 整合 Shiro 密碼登錄的實(shí)現(xiàn)代碼

    這篇文章主要介紹了SpringBoot 整合 Shiro 密碼登錄的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • IntelliJ IDEA開(kāi)發(fā)Maven時(shí)工具欄消失的三種恢復(fù)方法

    IntelliJ IDEA開(kāi)發(fā)Maven時(shí)工具欄消失的三種恢復(fù)方法

    在使用IntelliJ IDEA(簡(jiǎn)稱 IDEA)開(kāi)發(fā)Maven項(xiàng)目時(shí),偶爾會(huì)遇到右側(cè)或側(cè)邊欄的Maven工具欄突然消失的情況,這可能影響開(kāi)發(fā)者快速操作Maven構(gòu)建、依賴管理等功能,甚至導(dǎo)致項(xiàng)目配置混亂,所以本文給大家介紹了快速恢復(fù)Maven工具欄的3種方法,需要的朋友可以參考下
    2025-06-06
  • java多線程編程之使用runnable接口創(chuàng)建線程

    java多線程編程之使用runnable接口創(chuàng)建線程

    實(shí)現(xiàn)Runnable接口的類必須使用Thread類的實(shí)例才能創(chuàng)建線程,通過(guò)Runnable接口創(chuàng)建線程分為以下兩步
    2014-01-01
  • 一文詳細(xì)地講解Java異常及要如何處理

    一文詳細(xì)地講解Java異常及要如何處理

    在Java中異常處理是一種重要的編程概念,用于處理程序執(zhí)行過(guò)程中可能出現(xiàn)的錯(cuò)誤或異常情況,這篇文章主要介紹了Java異常及要如何處理的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-09-09

最新評(píng)論

桐庐县| 崇义县| 介休市| 攀枝花市| 休宁县| 韩城市| 南康市| 乃东县| 定边县| 凤台县| 都昌县| 民权县| 永泰县| 台北市| 平定县| 昌都县| 长葛市| 德兴市| 镇江市| 长岛县| 平邑县| 防城港市| 彝良县| 越西县| 县级市| 高密市| 乐东| 改则县| 通河县| 普兰店市| 龙陵县| 鄂托克旗| 彭阳县| 阳泉市| 龙川县| 房产| 长春市| 惠州市| 南涧| 常山县| 舒城县|