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