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
关注公众号:嗅谱网

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!