Java实现精确类型数据的输入
Java数据输入流可以实现精确类型数据的输入:
package com.mldn;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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.println(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); // String–>Integer–>int
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
public float getFloat(String info, String err) // 获取输入的float型小数
{
float temp = 0.0f; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d+.?\\d+f$”)) // 判断是数字组成
{
temp = Float.parseFloat(str); // String–>Float–>float
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
public Date getDate(String info, String err) // 获取输入的Date型日期
{
Date temp = null; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d{4}-[0-1]\\d-[0-3]\\d$”)) // 判断是数字组成
{
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”); // 实例化日期风格
try
{
temp = sdf.parse(str); // String–>Date
}
catch (ParseException e)
{
e.printStackTrace();
}
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
}
public class GetInput
{
public static void main(String[] args)
{
int i = 0;
int j = 0;
float f1 = 0;
float f2 = 0;
Date date = null;
InputData input = new InputData(); // 实例化
i = input.getInt(“请输入第一个整型:”, “输入错误!重新输入!”);
j = input.getInt(“请输入第二个整型:”, “输入错误!重新输入!”);
System.out.println(“两数的和:” + (i + j)); // 测试整型
f1 = input.getFloat(“请输入第一个float型:”, “数字后面加‘f’!重新输入!”);
f2 = input.getFloat(“请输入第二个float型:”, “数字后面加‘f’!重新输入!”);
System.out.println(“两数的和:” + (f1 + f2) + “f”); // 测试float型
date = input.getDate(“请输入日期:”, “输入格式非法!”);
System.out.println(“输入日期:” + date);
}
}
// 数据接收类
package com.mldn;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
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.println(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); // String–>Integer–>int
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
public float getFloat(String info, String err) // 获取输入的float型小数
{
float temp = 0.0f; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d+.?\\d+f$”)) // 判断是数字组成
{
temp = Float.parseFloat(str); // String–>Float–>float
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
public Date getDate(String info, String err) // 获取输入的Date型日期
{
Date temp = null; // 接收输入
String str = null; // 获取字符串信息
boolean flag = true; // 监视输入
while (flag)
{
str = this.getString(info); // 打印提示,并等待接收字符串信息
if (str.matches(“^\\d{4}-[0-1]\\d-[0-3]\\d$”)) // 判断是数字组成
{
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”); // 实例化日期风格
try
{
temp = sdf.parse(str); // String–>Date
}
catch (ParseException e)
{
e.printStackTrace();
}
flag = false; // 结束循环
}
else
{
System.out.println(err); // 打印错误信息
}
}
return temp;
}
}
// 定义接口
interface Menu
{
public void operate(); // 菜单操作
public String getTitle(); // 获取菜单标题
}
// 实现接口
class MenuAdd implements Menu // 添加菜单
{
private String title = null; // 菜单标题
public MenuAdd(String title)
{
this.title = title; // 实例化菜单
}
public String getTitle() // 获取菜单标题
{
return this.title;
}
public void operate() // 覆写抽象方法
{
System.out.println(“增加菜单调用成功!数据增加成功!”);
}
}
class MenuDelete implements Menu // 删除菜单
{
private String title = null; // 菜单标题
public MenuDelete(String title)
{
this.title = title; // 实例化菜单
}
public String getTitle() // 获取菜单标题
{
return this.title;
}
public void operate() // 覆写抽象方法
{
System.out.println(“删除菜单调用成功!数据删除成功!”);
}
}
class MenuAlter implements Menu // 修改菜单
{
private String title = null; // 菜单标题
public MenuAlter(String title)
{
this.title = title; // 实例化菜单
}
public String getTitle() // 获取菜单标题
{
return this.title;
}
public void operate() // 覆写抽象方法
{
System.out.println(“修改菜单调用成功!数据修改成功!”);
}
}
class MenuLook implements Menu // 查看菜单
{
private String title = null; // 菜单标题
public MenuLook(String title)
{
this.title = title; // 实例化菜单
}
public String getTitle() // 获取菜单标题
{
return this.title;
}
public void operate() // 覆写抽象方法
{
System.out.println(“查看菜单调用成功!数据查看成功!”);
}
}
class MenuExit implements Menu // 退出菜单
{
private String title = null; // 菜单标题
public MenuExit(String title)
{
this.title = title; // 实例化菜单
}
public String getTitle() // 获取菜单标题
{
return this.title;
}
public void operate() // 覆写抽象方法
{
System.out.println(“系统成功退出!”);
System.exit(0); // 正常退出
}
}
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Java实现精确类型数据的输入》
本文地址:http://www.xiupu.net/archives-98.html
关注公众号:
微信赞赏
支付宝赞赏