摘 要:在Java程序中經(jīng)常需要輸入數(shù)據(jù),在程序設(shè)計大賽的賽題中,也經(jīng)常需要輸入多組測試數(shù)據(jù),而輸入數(shù)據(jù)常用的工具就是Scanner。如何使用Scanner從控制臺輸入不同類型的數(shù)據(jù),如何使用Scanner輸入多組數(shù)據(jù),如何結(jié)束數(shù)據(jù)的輸入,這就是本文研究的內(nèi)容。
關(guān)鍵詞:Java;Scanner;循環(huán)輸入
一個程序總可以分成三個部分:輸入原始數(shù)據(jù)部分、計算處理部分和輸出結(jié)果部分。在Java程序中輸入數(shù)據(jù)也是一個非常重要的環(huán)節(jié)。在Java中可以通過Scanner輸入數(shù)據(jù),可以通過輸入流輸入數(shù)據(jù),也可以通過界面輸入數(shù)據(jù)。但是,由于課時有限,學(xué)生的編程基礎(chǔ)較差,常用的輸入方式還是Scanner。而且在程序設(shè)計大賽的賽題中,也經(jīng)常需要用Scanner配合循環(huán)語句來輸入多組測試數(shù)據(jù)。常見的循環(huán)輸入包括以下幾種情況。
一、循環(huán)次數(shù)可以確定
這種情況一般是首先輸入一個整數(shù),以確定循環(huán)次數(shù),然后進行指定次數(shù)的輸入。當(dāng)次數(shù)夠則循環(huán)結(jié)束。如2017年河北省大學(xué)生程序設(shè)計大賽的第一題,其輸入要求如下:
輸入部分可使用如下語句。
二、循環(huán)次數(shù)不能確定,但結(jié)束條件確定
這種情況輸入不說明有多少組數(shù)據(jù),但以某個特殊輸入為結(jié)束標志。平時做題中常見諸如“輸入學(xué)生成績,以-1結(jié)束”。比如OJ平臺上的一個題描述如下:
解決這個問題可以使用while循環(huán),當(dāng)n不等于-1時反復(fù)輸入,直到n等于-1結(jié)束。關(guān)鍵代碼如下:
也可以使用永真循環(huán),在循環(huán)體內(nèi)判斷n是否等于-1,如果n等于-1則使用break語句結(jié)束循環(huán),關(guān)鍵代碼如下:
三、次數(shù)和結(jié)束條件均不確定
這種輸入既沒有指定數(shù)據(jù)的組數(shù),也沒有說明結(jié)束條件,一般是當(dāng)沒有數(shù)據(jù)可讀時結(jié)束,可以使用Scanner的hasNext()方法判斷是否還有數(shù)據(jù)可以掃描。如2017年河北省大學(xué)生程序設(shè)計大賽的第八題(題目名稱為斗地主),其輸入要求如下:
這個題目只說明有多組數(shù)據(jù),具體幾組不確定,輸入數(shù)據(jù)何時結(jié)束也不明確,這時可以使用hasNext()方法來控制循環(huán)結(jié)束。輸入部分可以使用如下代碼:
四、總結(jié)
以上是筆者結(jié)合指導(dǎo)學(xué)生參賽的一點經(jīng)驗和多年的Java教學(xué)實踐經(jīng)驗,對從控制臺循環(huán)輸入數(shù)據(jù)的方法做出的粗淺總結(jié),雖然并不是特別全面和細致,但對學(xué)生參賽會有一定的指導(dǎo)作用。在程序中輸入輸出是不可或缺的內(nèi)容,在Java中輸入數(shù)據(jù)有多種形式,也有多種工具,Scanner只是其中的一種,數(shù)據(jù)輸入可研究的內(nèi)容還有很多,以后還需要繼續(xù)深入研究。
參考文獻
[1]張延軍.Java程序設(shè)計教程[M].北京:清華大學(xué)出版社,2017.40頁.
[2]迂者-賀利堅的專欄.ACM題目中輸入數(shù)據(jù)的處理(C語言版)[EB/OL].https://blog.csdn.net/sxhelijian/article/details/8978794,2013-5-27.
[3]Megustas_JJC的博客.Java中Scanner用法總結(jié)[EB/OL].https://blog.csdn.net/Megustas_JJC/article/details/68960433,2017-4-3.
作者簡介
劉翠霞,女,中共黨員,信息學(xué)院軟件教研室主任,高級工程師,工程碩士。研究方向:高職教育,軟件開發(fā)。已結(jié)項課題《“傳幫帶”分組教學(xué)模式在合班授課中的應(yīng)用》,在研課題《“互聯(lián)網(wǎng)+”背景下利用信息技術(shù)優(yōu)化人社管理模式的研究》。
(作者單位:石家莊財經(jīng)職業(yè)學(xué)院)