再来练一遍,模拟键盘输入数字,找出最大值和最小值

本文介绍了一个Java程序,用于从用户输入中获取一系列整数,并找出这些整数中的最大值和最小值。通过工厂模式创建了一个接口实现类,该类利用InputUtil工具类读取用户输入并验证是否为数字。

package yn.ngems.cn.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputUtil {
    public static int getNumber(String warn) {
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
        int num = 0;
        String str = null;
        boolean flag = true;
        System.out.print(warn);
        while(flag) {
            try {
                str = buf.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            if(str.matches("\\d+")) {
                num = Integer.parseInt(str);
                flag = false;
            }else {
                System.out.print("不是数字,重新输入:");
            }
        }
        return num;
    }
}
package yn.ngems.cn.Iinterface;
public interface ICompareNumber {
    public int [] getCompareNumbers(int count) ;
}

package yn.ngems.cn.IinterfaceImpl;
import yn.ngems.cn.Iinterface.ICompareNumber;
import yn.ngems.cn.util.InputUtil;
public class ICompareNumberImpl implements ICompareNumber{
    public ICompareNumberImpl() {}
    /**
     * return data[2],最大值:data[0],最小值:data[1]
     */
    @Override
    public int[] getCompareNumbers(int count) {
        int num [] = new int [count];
        int data [] = new int [2];
        for(int x = 0;x < num.length;x ++) {
            num[x] = InputUtil.getNumber("请输入第" + (x + 1) + "个数字:");
        }
        data[0] = num[0];
        data[1] = num[0];
        for(int x = 0;x <num.length;x ++) {
            if(num[x] > data[0]) {
                data[0] = num[x];
            }
            if(num[x] < data[1]) {
                data[1] = num[x];
            }
        }
        return data;
    }

}
package yn.ngems.cn.factory;
import yn.ngems.cn.Iinterface.ICompareNumber;
import yn.ngems.cn.IinterfaceImpl.ICompareNumberImpl;
public class Factory {
    public static ICompareNumber getInstance() {
        return new ICompareNumberImpl();
    }
}

package yn.ngems.cn.test;

import yn.ngems.cn.Iinterface.ICompareNumber;
import yn.ngems.cn.factory.Factory;

public class TestCompareNumberDemo {
    public static void main(String[] args) {
        ICompareNumber icNumber = Factory.getInstance();
        int results [] = icNumber.getCompareNumbers(7);
        System.out.println("最大值:" + results[0] + "、最小值:" + results[1]);
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值