1. 程式人生 > 程式設計 >詳解Java中方法next()和nextLine()的區別與易錯點

詳解Java中方法next()和nextLine()的區別與易錯點

1、基本語法

1.1基本使用方法

本篇部落格重點nextLine()會讀取換行('\r'),但是不會進行輸出。

Java中Scanner類中的方法next()和nextLine()都是吸取輸入臺輸入的字元,區別:

  • next()不會吸取字元前/後的空格/Tab鍵,只吸取字元,開始吸取字元(字元前後不算)直到遇到空格/Tab鍵/回車截止吸取;
  • nextLine()吸取字元前後的空格/Tab鍵,回車鍵截止。

輸入兩行字串:
我愛學JAVA 我真的很愛愛學JAVA
我真的很愛很愛學JAVA

期望輸出結果:
我愛學JAVA 我真的很愛愛學JAVA
我真的很愛很愛學JAVA

package scanner;

import java.util.Scanner;

public class Sun_01 {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String str1 = scanner.nextLine();
    String str=scanner.next();
    System.out.println(str1);
    System.out.println(str);
    scanner.close();
  }
}

在這裡插入圖片描述

沒錯,和我們期望輸出結果一樣。

2、nextLine()易錯點

2.1 nextLine()使用錯誤案例

我們第一行使用next()進行讀入,第二行使用nextLine()進行讀入兩行字串

輸入兩行字串:
我愛學JAVA
我愛學JAVA 我真的很愛愛學JAVA

期望輸出結果:
我愛學JAVA
我愛學JAVA 我真的很愛愛學JAVA

package scanner;

import java.util.Scanner;

public class Sun_01 {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next();
    String str2=scanner.nextLine();
    System.out.println(str);
    System.out.println(str2);
    scanner.close();
  }
}

在這裡插入圖片描述

​ 會發現,輸入臺輸入“我愛學JAVA"後接著輸出了,與我們期望輸出結果不一樣。

到底是因為什麼呢?

​ Scanner是一個掃描器,我們錄取到鍵盤的資料,先存到快取區等待讀取,它判斷讀取結束的標示是 空白符;比如空格,回車,tab 等等。

​ next()方法讀取到空白符就結束,也就是讀取完“我愛學JAVA”;

​ nextLine()只讀取到回車結束也就是“\r”;

通俗解釋為:因為next()讀取到空白符前的資料時結束了,然後把回車“\r”留給了nextLine();所以上面nextLine()沒有輸出,不輸出不代表沒資料,是接到了空(回車“/r”)的資料。

正確的解決方式:

package scanner;

import java.util.Scanner;

public class Sun_01 {
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next();
    String str1=scanner.nextLine();
    String str2=scanner.nextLine();
    System.out.println(str);
    System.out.println(str2);
    scanner.close();
  }
}

在這裡插入圖片描述

解決方式為多用一個nextLine()將換行讀入。

到此這篇關於詳解Java中方法next()和nextLine()的區別與易錯點的文章就介紹到這了,更多相關Java next()和nextLine()內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!