模拟输入数字,找出最大值和最小值

本文介绍了一个Java工具类,用于从用户输入中获取整数并找出其中的最大值和最小值。通过工厂模式创建比较器实例,利用正则表达式验证输入是否为数字,确保了输入的有效性和程序的健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 prompt) throws IOException {

BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

String str = null;

boolean flag = true;

int num = 0;

while(flag) {

System.out.print(prompt);

str = buf.readLine();

if(str.matches("\\d+")) {

num = Integer.parseInt(str);

flag = false;

}else {

System.out.println("输入有误,请重新输入数字:");

}

}

return num;

}

}

package yn.ngems.cn.compare;

import java.io.IOException;

import yn.ngems.cn.interfaceNum.INumberCompare;

import yn.ngems.cn.util.InputUtil;

public class CompareNumber implements INumberCompare{

public CompareNumber() {}

/**

 * int[2]两个内容,0为最大值,1为最小值

 * @return

 */

public int [] compareNum(int count) {

int data [] = new int [2];

int num [] = new int[count];

for(int x = 0;x < num.length;x ++) {

try {

num[x] = InputUtil.getNumber("请输入第" + (x + 1) + "数字:");

} catch (IOException e) {

e.printStackTrace();

}

}

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.compare.CompareNumber;

import yn.ngems.cn.interfaceNum.INumberCompare;

public class FactoryNumber {

public static INumberCompare getInstance() {

return new CompareNumber();

}

}

package yn.ngems.cn.test;

import java.io.IOException;

import yn.ngems.cn.factory.FactoryNumber;

import yn.ngems.cn.interfaceNum.INumberCompare;

public class NumberTest {

public static void main(String[] args) throws IOException {

INumberCompare numcompare = FactoryNumber.getInstance();

int results [] = numcompare.compareNum(10);

System.out.println("最大值:" + results[0] + "、最小值:" + results[1]);

}

}

package yn.ngems.cn.interfaceNum;

public interface INumberCompare {

public int [] compareNum(int count);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值