本節将帶着讀者開發實際案例,實作對輸入的數字大小的比較功能,并求出所輸數字的最大值和最小值。
【本節目标】
通過閱讀本節内容,你将複習Scanner的相關知識,結合工廠模式,編寫數字處理相關接口并完成實作,最終實作求出輸入的三個數字的最大值和最小值的功能。
數字大小比較
編寫java程式,輸入3個整數,并求出3個整數的最大值和最小值。
如果要想進行數字的輸入處理,那麼應該保證輸入錯誤的時候可以重新輸入,那麼為了可以達到重用的設計,應該準備一個單獨的輸入資料類。
1、 定義一個輸入工具類
public class InputUtil {
private InputUtil(){}
/**
* 實作鍵盤接收數字的操作
* @param prompt 提示資訊
* @return 一個可以使用的數字
*/
public static int getInt(String prompt){
int num = 0;
boolean flag = true;
while (flag){
Scanner input = new Scanner(System.in);
System.out.print(prompt); //列印提示資訊
if(input.hasNext("\\d+")){
num = Integer.parseInt(input.next("\\d+"));
flag = false ;
}else{
System.out.println("輸入的内容不是數字!");
}
}
return num ;
}
}
或者使用BufferedReader 來定義。
public class InputUtil {
private InputUtil(){}
/**
* 實作鍵盤接收數字的操作
* @param prompt 提示資訊
* @return 一個可以使用的數字
*/
public static int getInt(String prompt){
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
int num = 0;
boolean flag = true;
while (flag){
System.out.print(prompt); //列印提示資訊
String str = null;
try{
str = buf.readLine();
if(str.matches("\\d+")){
num = Integer.parseInt(str);
flag = false ;
}else{
System.out.println("輸入的内容不是數字!");
}
}catch(IOException e) {
System.out.println("輸入的内容不是數字!");
}
}
return num ;
}
}
2、 定義資料的輸入處理
public interface INumberService{
/**
* 輸入資料并傳回輸入資料的最大值和最小值
* @param count 表示要輸入資料的個數
* @return 包含有兩個内容:第一個是最大值,第二個是最小值
*/
public int[] stat(int count);
}
3、 定義接口的實作子類
public class NumberServiceImpl implements INumberService{
@Override
public int[] stat(int count) {
int result[] = new int[2]; //定義傳回的結果
int data[] = new int[count]; //開辟一個數組
for (int x = 0; x < data.length; x++) { //數字的循環輸入
data[x]=InputUtil.getInt("請輸入第""+(x+1)+""個數字:");
}
result[0]=data[0]; //最大值
result[1]=data[0]; //最小值
for(int x = 0 ;x < data.length; x ++) {
if(data[x] > result[0]) {
result[0] = data[x];
}
if(data[x] < result[1]) {
result[1] = data[x];
}
}
return result;
}
}
4、 定義工廠類擷取接口對象
public class Factory{
private Factory(){}
public static INumberService getInstance(){
return new NumberServiceImpl();
}
}
5、 編寫測試程式類
public class IOCaseDemo{
public static void main(String[] args) {
INumberService numberService = Factory.getInstance();
int result [] = numberService.stat(5);
System.out.println("最大值:"+ result[0]+ "、最小值:"+ result[1] );
}
}

執行結果
想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。
本内容視訊來源于
阿裡雲大學 下一篇:IO實戰篇:檔案儲存 | 帶你學《Java語言進階特性》之七十三 更多Java面向對象程式設計文章檢視此處