* * * * * 重要的键盘输入类InputData!

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;

public class InputData {
	private BufferedReader buf = null;

	public InputData() {// 只要输入数据就要使用此语句
		this.buf = new BufferedReader(new InputStreamReader(System.in));
	}

	public String getString(String info) { // 得到字符串信息
		String temp = null;
		System.out.print(info); // 打印提示信息
		try {
			temp = this.buf.readLine(); // 接收数据
		} catch (IOException e) {
			e.printStackTrace();
		}

		return temp;
	}

	public int getInt(String info, String err) { // 得到一个整数的输入数据
		int temp = 0;
		String str = null;
		boolean flag = true; // 定义一个标记位
		while (flag) {
			str = this.getString(info); // 接收数据
			if (str.matches("^\\d+$")) { // 判断是否由数字组成
				temp = Integer.parseInt(str); // 转型
				flag = false; // 结束循环
			} else {
				System.out.println(err); // 打印错误信息
			}
		}
		return temp;
	}

	public float getFloat(String info, String err) { // 得到一个小数的输入数据
		float temp = 0;
		String str = null;
		boolean flag = true; // 定义一个标记位
		while (flag) {
			str = this.getString(info); // 接收数据
			if (str.matches("^\\d+.?\\d+$")) { // 判断是否由数字组成
				temp = Float.parseFloat(str); // 转型
				flag = false; // 结束循环
			} else {
				System.out.println(err); // 打印错误信息
			}
		}
		return temp;
	}

	public Date getDate(String info, String err) { // 得到一个日期的输入数据
		Date temp = null;
		String str = null;
		boolean flag = true; // 定义一个标记位
		while (flag) {
			str = this.getString(info); // 接收数据
			if (str.matches("^\\d{4}-\\d{2}-\\d{2}$")) { // 判断是否由数字组成
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
				try {
					temp = sdf.parse(str); // 将字符串变为Date型数据
				} catch (Exception e) {
				}
				flag = false; // 结束循环
			} else {
				System.out.println(err); // 打印错误信息
			}
		}
		return temp;
	}

	public String getPath(String info, String err) { // 得到一个路径格式的输入字符串
		String str = "";
		String s = "";
		boolean flag = true; // 定义一个标记位
		while (flag) {
			str = this.getString(info); // 接收数据
			String ts = str.trim();// 马蛋,这个也不能少,实际读取的可能比字符长,出现空格造成路径出错。
			// 下面的路径正则要求文件或文件夹只能用字母数字下划线,可以有扩展名
			if (ts.matches("^[a-zA-Z]:[\\\\\\w+]+.?\\w*$|^[a-zA-Z]:[/\\w+]+.?\\w*$")) {// String中\要用\\\\表示,|的运算优先级最后
				char c[] = ts.toCharArray();
				for (int i = 0; i < c.length; i++) {
					if (String.valueOf(c[i]).equals("\\") || String.valueOf(c[i]).equals("/")) {// 将/换成File.separator才是正道,以适应各种系统。
						s = s + File.separator;// 在遇到其他系统,对分隔符的判断还要扩大。
					} else {
						s = s + c[i];
					}
				}
				flag = false; // 结束循环
			} else {
				System.out.println(err); // 打印错误信息
			}
		}
		return s;
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章