InputData()类

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;
	}
 
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 请创建一个抽象类DataStructure,该类包括下面的成员变量和成员函数: 1) 一个成员变量len,表示里面的元素个数最大值 2) 构造函数DataStructure(int l),将len初始化为0 3) 虚析构函数~DataStructure() 4) 纯虚函数Output(),输出DataStructure中的数据 5) 纯虚函数Size(),返回DataStructure中的元素个数 2. 请创建DataStructure的一个派生类MyString,该类包括下面的成员变量和成员函数: 1) 一个成员变量char* data,表示里面的数据 2) 构造函数MyString(int max_size),将MyString初始化为空串,最大元素个数为max_size 3) 析构函数~MyString(),释放相应的数据 4) Input()函数,往MyString输入数据 5) 重载operator+=()函数,实现两个字符串的连接 6) 重定义Output()和Size()函数 3. 请创建DataStructure的一个派生类MyStack,该类包括下面的成员变量和成员函数: 1) 一个成员变量int* data,用于里面的数据 2) 一个成员变量int top,表示最上面的元素下标 3) 构造函数MyStack(int max_size),将MyStack初始化为空栈,最大元素个数为max_size 4) 析构函数~MyStack(),释放相应的数据 5) Push_back(int e)函数,往栈里面压入一个数据e 6) 重定义Output()和Size()函数 4. 请编写main函数,测试上面程序的正确性 1) 创建两个MyString的对象str1和str2,分别调用Input函数输入str1和str2,然后分别调用operator+=函数将str2连接到str1的末尾 2) 创建一个MyStack的对象stack,调用Push_back函数输入往stack中输入m(m < max_size)个数据 3) 创建一个长度为3的DataStructure*类型的数组,将其3个元素分别指向str1, str2, stack,然后编写for循环调用Size()和Output()函数输出每个元素的大小和内容。 5. 输入输出样例: 1) 输入样例 A promising techni que for checking reachability 4 12 23 34 45 2) 输出样例 47 A promising technique for checking reachability 29 que for checking reachability 4 12 23 34 45

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值