欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Scanner類基礎使用、可能遇到的問題及注意事項

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

一、Scanner 類概述

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

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

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

在使用 Scanner 類之前,需要先創(chuàng)建它的對象。如果要從標準輸入(鍵盤)讀取數(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對象進行輸入讀取操作
    }
}

這里通過 new Scanner(System.in) 創(chuàng)建了一個 Scanner 對象,System.in 表示標準輸入流,意味著后續(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("請輸入一個整數(shù):");
        int num = scanner.nextInt();//程序執(zhí)行到這里就會停下來,等待鍵盤的輸入。
                                    //鍵盤如果沒有輸入,這里就會一直卡著
            //直到用戶輸入了內(nèi)容之后,敲回車,這行代碼就執(zhí)行結束了
             //這樣就完成了數(shù)據(jù)從控制臺到內(nèi)存

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

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

注意:針對nextInt()方法來說,只能接收整數(shù)數(shù)字。輸入其他的字符串會報錯。

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

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

import java.util.Scanner;

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

        System.out.println("請輸入一個雙精度浮點數(shù):");
        double dNum = scanner.nextDouble();
        System.out.println("你輸入的雙精度浮點數(shù)是: " + dNum);

        scanner.close();
    }
}

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

3.讀取字符串

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

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

細節(jié):從鍵盤上接收一個字符串,但是接收的是第一個空格之前的內(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("請輸入一些單詞(以空格分隔):");
        String word = scanner.next();
        System.out.println("你輸入的單詞是: " + word);
        scanner.close();
    }
}

輸入多個單詞時,它只會獲取第一個單詞并返回。

示例代碼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("請輸入一行文字:");
        String line = scanner.nextLine();
        System.out.println("你輸入的文字內(nèi)容是: " + line);
        scanner.close();
    }
}

它會獲取從當前位置到行尾的所有字符,更適合讀取完整的語句等情況。

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

可能遇到的問題及注意事項

1.輸入不匹配異常

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

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("請輸入一個整數(shù):");
            int num = scanner.nextInt();
            System.out.println("你輸入的整數(shù)是: " + num);
        } catch (InputMismatchException e) {
            System.out.println("輸入的數(shù)據(jù)類型不正確,請重新輸入整數(shù)!");
        } finally {
            scanner.close();
        }
    }
}

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

2.nextLine() 方法使用的坑

由于nextInt()只讀取整數(shù),不讀取后續(xù)的換行符,這會導致nextLine()在下一次調(diào)用時直接讀取空字符串。解決方法是使用nextLine()獲取整數(shù)后的換行符,避免空字符導致的跳過輸入現(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(); //無論是next(),還是nextInt(),nextDouble()這幾個方法接收的是第一個空格之前的內(nèi)容
                         //而對于 son依舊留在緩存中,其在緩存的格式為 son\r(回車符)
        System.out.println(username);

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

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

運行結果:

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

import java.util.Scanner;

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

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

        scanner.close();
    }
}

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

總結

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

相關文章

  • Spring Boot與ActiveMQ整合的步驟

    Spring Boot與ActiveMQ整合的步驟

    今天小編就為大家分享一篇關于Spring Boot與ActiveMQ整合的步驟,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java 創(chuàng)建PDF打印小冊子案例

    Java 創(chuàng)建PDF打印小冊子案例

    這篇文章主要給大家分享Java 創(chuàng)建PDF打印小冊子案例,PDF打印小冊子是指將PDF格式文檔在打印成刊物前需要提前進行的頁面排版,以便在打印后裝訂成冊,下面文章內(nèi)容我們將下面以Java代碼展示如何來實現(xiàn),需要的朋友可以參考一下
    2021-10-10
  • Java內(nèi)存模型原子性原理及實例解析

    Java內(nèi)存模型原子性原理及實例解析

    這篇文章主要介紹了Java內(nèi)存模型原子性原理及實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot AOP如何配置全局事務

    SpringBoot AOP如何配置全局事務

    這篇文章主要介紹了SpringBoot AOP如何配置全局事務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中接口的多態(tài)詳解

    Java中接口的多態(tài)詳解

    大家好,本篇文章主要講的是Java中接口的多態(tài)詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 詳解RabbitMQ中延遲隊列結合業(yè)務場景的使用

    詳解RabbitMQ中延遲隊列結合業(yè)務場景的使用

    這篇文章主要介紹了詳解RabbitMQ中延遲隊列結合業(yè)務場景的使用,延遲隊列中的元素都是帶有時間屬性的,延遲隊列就是用來存放需要在指定時間被處理的元素的隊列,需要的朋友可以參考下
    2023-05-05
  • 解決@JsonIgnore的使用以及自己踩坑

    解決@JsonIgnore的使用以及自己踩坑

    這篇文章主要介紹了解決@JsonIgnore的使用以及自己踩坑,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Spring Security之默認的過濾器鏈及自定義Filter操作

    Spring Security之默認的過濾器鏈及自定義Filter操作

    這篇文章主要介紹了Spring Security之默認的過濾器鏈及自定義Filter操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java中byte[]、String、Hex字符串等轉換的方法

    Java中byte[]、String、Hex字符串等轉換的方法

    這篇文章主要介紹了Java中byte[]、String、Hex字符串等轉換的方法,代碼很簡單,需要的朋友可以參考下
    2018-05-05
  • spring 自定義讓@Value被解析到

    spring 自定義讓@Value被解析到

    這篇文章主要介紹了spring 自定義讓@Value被解析到,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評論