溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Java中方法next()和nextLine()的區(qū)別有什么

發(fā)布時(shí)間:2020-11-02 15:01:03 來(lái)源:億速云 閱讀:148 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

Java中方法next()和nextLine()的區(qū)別有什么?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

1、基本語(yǔ)法

1.1基本使用方法

nextLine()會(huì)讀取換行('\r'),但是不會(huì)進(jìn)行輸出。

Java中Scanner類(lèi)中的方法next()和nextLine()都是吸取輸入臺(tái)輸入的字符,區(qū)別:

  • next()不會(huì)吸取字符前/后的空格/Tab鍵,只吸取字符,開(kāi)始吸取字符(字符前后不算)直到遇到空格/Tab鍵/回車(chē)截止吸??;
  • nextLine()吸取字符前后的空格/Tab鍵,回車(chē)鍵截止。

輸入兩行字符串:
我愛(ài)學(xué)JAVA 我真的很愛(ài)愛(ài)學(xué)JAVA
我真的很愛(ài)很愛(ài)學(xué)JAVA

期望輸出結(jié)果:
我愛(ài)學(xué)JAVA 我真的很愛(ài)愛(ài)學(xué)JAVA
我真的很愛(ài)很愛(ài)學(xué)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();
  }
}

Java中方法next()和nextLine()的區(qū)別有什么

沒(méi)錯(cuò),和我們期望輸出結(jié)果一樣。

2、nextLine()易錯(cuò)點(diǎn)

2.1 nextLine()使用錯(cuò)誤案例

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

輸入兩行字符串:
我愛(ài)學(xué)JAVA
我愛(ài)學(xué)JAVA 我真的很愛(ài)愛(ài)學(xué)JAVA

期望輸出結(jié)果:
我愛(ài)學(xué)JAVA
我愛(ài)學(xué)JAVA 我真的很愛(ài)愛(ài)學(xué)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中方法next()和nextLine()的區(qū)別有什么

​ 會(huì)發(fā)現(xiàn),輸入臺(tái)輸入“我愛(ài)學(xué)JAVA"后接著輸出了,與我們期望輸出結(jié)果不一樣。

到底是因?yàn)槭裁茨兀?/strong>

​ Scanner是一個(gè)掃描器,我們錄取到鍵盤(pán)的數(shù)據(jù),先存到緩存區(qū)等待讀取,它判斷讀取結(jié)束的標(biāo)示是 空白符;比如空格,回車(chē),tab 等等。

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

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

通俗解釋為:因?yàn)閚ext()讀取到空白符前的數(shù)據(jù)時(shí)結(jié)束了,然后把回車(chē)“\r”留給了nextLine();所以上面nextLine()沒(méi)有輸出,不輸出不代表沒(méi)數(shù)據(jù),是接到了空(回車(chē)“/r”)的數(shù)據(jù)。

正確的解決方式:

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();
  }
}

Java中方法next()和nextLine()的區(qū)別有什么

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

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI