数字大小比较
编写java程序,输入3个整数,并求出3个整数的最大值和最小值。
如果要想进行数字的输入处理,那么应该保证输入错误的时候可以重新输入,为了可以达到重用的一个设计应该准备一个单独的输入数据类。
- 定义一个输入工具类
package com.io.demo.util;
import java.util.Scanner;
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;
}
}
- 定义数据的输入处理
package com.io.demo.service;
public interface INumberSevice {
/**
* 输入数据并缺返回输入数据的最大值与最小值
* @param count 输入数据的个数
* @return 包含有两个内容,第一个是最大值,第二个为最小值
*/
public int[] stat(int count);
}
- 定义接口的实现子类
package com.io.demo.service.impl;
import com.io.demo.service.INumberSevice;
import com.io.demo.util.InputUtil;
public class NumberServiceImpl implements INumberSevice{
@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;
}
}
- 定义工厂类获取对象
package com.io.demo.factory;
import com.io.demo.service.INumberSevice;
import com.io.demo.service.impl.NumberServiceImpl;
public class Factory {
private Factory() {} //私有化构造
public static INumberSevice getInstance() {
return new NumberServiceImpl();
}
}
- 编写测试程序类
package com.io.demo;
import com.io.demo.factory.Factory;
import com.io.demo.service.INumberSevice;
public class IOCaseDemo {
public static void main(String[] args) {
INumberSevice numberService = Factory.getInstance();
int[] result = numberService.stat(3);
System.out.println("最大值:"+result[0]+"\n最小值:"+result[1]);
}
}