java中hasnext的作用_java中Scanner的hasNext()的疑問

第一個問題,兩段代碼的區別在于阻塞的位置不同,加上一行輸出代碼就可以很明顯地看到差別。

Test.java

import java.util.Scanner;

public class Test {

public static void main(String[] args) {

Scanner s = new Scanner(System.in);

while(s.hasNext())

{

System.out.print("You inputted: ");

System.out.println(s.next());

}

}

}

另,hasNext()方法會阻塞,不代表next()方法就不會阻塞。

/**

* Returns true if this scanner has another token in its input.

* This method may block while waiting for input to scan.

* The scanner does not advance past any input.

*

* @return true if and only if this scanner has another token

* @throws IllegalStateException if this scanner is closed

* @see java.util.Iterator

*/

public boolean hasNext() {

ensureOpen();

saveState();

while (!sourceClosed) {

if (hasTokenInBuffer())

return revertState(true);

readInput();

}

boolean result = hasTokenInBuffer();

return revertState(result);

}

/**

* Finds and returns the next complete token from this scanner.

* A complete token is preceded and followed by input that matches

* the delimiter pattern. This method may block while waiting for input

* to scan, even if a previous invocation of {@link #hasNext} returned

* true.

*

* @return the next token

* @throws NoSuchElementException if no more tokens are available

* @throws IllegalStateException if this scanner is closed

* @see java.util.Iterator

*/

public String next() {

ensureOpen();

clearCache

while (true) {

String token = getCompleteTokenInBuffer(null);

if (token != null) {

matchValid = true;

skipped = false;

return token;

}

if (needInput)

readInput();

else

throwFor();

}

}

第二個問題,想要結束循環,在Windows環境下,需要輸入Ctrl+Z;而在Unix環境下,需要輸入Ctrl+D。注意,這是輸入,而不是對控制臺進行操作。這相當于向控制臺輸入一個字符,這個字符代表EOF,此時hasNext()方法返回false,循環結束。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287423.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287423.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287423.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《看聊天記錄都學不會C語言?太菜了吧》(2)我說編程很容易你們不服?

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我,若你是真心學習可以送你書籍,指導你學習,給予你目標方向的學習路線,無套路,博客為證。 本系列文章將會以通俗易懂的對話方式進行教學,對話中將涵蓋…

ABAP的自學之路 ,初步認識ABAP 一

由于工作的關系,最近需要對SAP系統進行二次開發,于是開始學習ABAP。鑒于網上對于ABAP的資料少之又少,所以自己整理一些資料。 第一章 ABAP 開發環境和總體介紹1.1 ABAP 開發環境ABAP 開發的三種環境:(1)SAP…

LCD1602,4位數據總線液晶屏時鐘,STC12C5A60S2的10位ADC功能程序

/* 程序名:    LCD1602,4位數據總線液晶屏時鐘,STC12C5A60S2的10位ADC功能程序 編寫時間:  2015年10月4日 硬件支持:  LCD1602液晶屏 STC12C5A60S2 外部12MHZ晶振 接線定義: DB7 --> P1^7DB6…

WPF|黑暗模式的錢包支付儀表盤界面設計

收集下大家的意見,是否需要在文中貼上源碼(文末會給出源碼鏈接),請大家踴躍留言。閱讀目錄效果展示準備簡單說明 源碼結尾(視頻及源碼倉庫)1. 效果展示欣賞效果:2. 準備創建一個WPF工程&#x…

量子計算機的現狀和趨勢

量子計算機概述 計算機是一種新型的運算 它具有具有強大的并行處理數據的能力,可解決現有計算機難以運算的數學問題。因此,它成為世界各國戰略競爭的焦點。 量子計算機的優勢 量子計算機與現有的電子計算機以及正在研究的光計算機,生物計算機…

【空間數據庫】Windows操作系統PostgreSQL+PostGIS環境搭建圖文安裝教程

PostgreSQL是一種特性非常齊全的自由軟件的對象-關系型數據庫管理系統(ORDBMS),PostgreSQL支持大部分的SQL標準并且提供了很多其他現代特性,如復雜查詢、外鍵、觸發器、視圖、事務完整性、多版本并發控制等。同樣,PostgreSQL也可以用許多方法擴展,例如通過增加新的數據類…

Android之gravity=“center_vertical“和layout_gravity=“center“的效果

1、兩控件分別加上2個下面的屬性 gravity="center_vertical" android:layout_gravity="center" 代碼如下 <LinearLayoutandroid:id="@+id/ll_no_love"android:layout_width="match_parent"android:layout_height="match…

《看聊天記錄都學不會C語言?太菜了吧》(3)人艱不拆,代碼都在談戀愛?!

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

spark java 計數_spark程序——統計包含字符a或者b的行數

本篇分析一個spark例子程序。程序實現的功能是&#xff1a;分別統計包含字符a、b的行數。java源碼如下&#xff1a;package sparkTest;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import…

golang reflect

reflect包實現了運行時反射&#xff0c;允許程序操作任意類型的對象。典型用法是用靜態類型interface{}保存一個值&#xff0c;通過調用TypeOf獲取其動態類型信息&#xff0c;該函數返回一個Type類型值。調用ValueOf函數返回一個Value類型值&#xff0c;該值代表運行時的數據。…

DB2常用命令

查看DB2License信息 DB2基礎命令 轉載于:https://www.cnblogs.com/arcer/p/5573317.html

.NET7 Preview4之MapGroup

這篇是“聞(看)香(碼)識(學)女(技)人(術)”。這也是一個有意思的功能&#xff0c;路由分組&#xff0c;啥也不說了&#xff0c;看代碼看結果&#xff1a;using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.OpenApi;var builder WebApplication.Create…

【空間數據庫】ArcGIS 10.6 Database_Server_Desktop安裝、連接數據庫服務、創建企業級數據庫(附server10.6.ecp)

由于作者一直使用SQL Server 2008 R2開發版,之前在ArcGIS中創建企業級數據庫都是基于單獨安裝的SQL Server 2008 R2開發版,今天我們演示安裝ArcGIS10.6自帶的數據庫服務(SQL Server 2014 Express版本)、連接數據庫服務和創建數據庫。 首先,我們來看一下完整的ArcGIS10.6安…

(一)easyUI之樹形網絡

樹形網格&#xff08;TreeGrid&#xff09;可以展示有限空間上帶有多列和復雜數據電子表 一、案例一&#xff1a;按tree的數據結構來生成 前臺<% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DO…

《看聊天記錄都學不會C語言?太菜了吧》(4)零基礎的我原來早就學會編程了?

若是大一學子或者是真心想學習剛入門的小伙伴可以私聊我&#xff0c;若你是真心學習可以送你書籍&#xff0c;指導你學習&#xff0c;給予你目標方向的學習路線&#xff0c;無套路&#xff0c;博客為證。 本系列文章將會以通俗易懂的對話方式進行教學&#xff0c;對話中將涵蓋…

Android之華為平板打日志提示Permission denied

1 問題 $ adb logcat | grep ssfsafaf int logctl_get(): open /dev/hwlog_switch fail -1, 13. Permission deniedNote: log switch off, only log_main and log_events will have logs!2 解決辦法 1&#xff09;、如果是華為手機&#xff0c;打開手機的撥號界面&#xff0c…

二叉樹結構 codevs 1029 遍歷問題

codevs 1029 遍歷問題 時間限制: 1 s空間限制: 128000 KB題目等級 : 鉆石 Diamond題目描述 Description我們都很熟悉二叉樹的前序、中序、后序遍歷&#xff0c;在數據結構中常提出這樣的問題&#xff1a;已知一棵二叉樹的前序和中序遍歷&#xff0c;求它的后序遍歷&#xff0c;…

java的概率的程序_java實現一個抽獎概率類

在一些項目需求中&#xff0c;可能會遇到抽獎問題&#xff0c;如提供一系列獎品及獲獎概率&#xff0c;要求根據概率返回每次抽到的獎品。以下是本人在實際項目中寫的一個抽獎工具類&#xff0c;與大家共同分享&#xff1a;import java.util.ArrayList;import java.util.List;i…

【空間數據庫】ArcGIS10.6連接PostgreSQL數據庫并顯示數據至ArcMap中

前面的文章《【開源數據庫】Windows操作系統PostgreSQL+PostGIS環境搭建圖文安裝教程 》講解了在Windows上安裝開源GIS和開源數據庫。本文接著來講采用ArcGIS 10.6連接PostgreSQL數據庫,并加載矢量數據到ArcMap中。 我們已經在pgAdmin中創建了一個空間數據庫test,并導入了Sha…

算法-低位優先的字符串排序

低位優先的字符串排序相當于是對鍵索引計數方法的一個擴展&#xff0c;主要用于處理固定長度字符串&#xff0c;比如說手機號&#xff0c;固定電話&#xff0c;銀行卡卡號&#xff0c;字符串的長度為N&#xff0c;從右向左開始進行每個鍵作為值開始遍歷&#xff0c;實現比較簡單…