java(安全方便的从控制台读入数据)[对Scanner类进行封装,用正则表达式判断]...

此版本是对自己的这篇博客中的源码进行了优化:http://blog.csdn.net/haifengzhilian/article/details/7835404


package com.iflytek.util;
import java.util.*;
import java.util.regex.Pattern;/*** 类名:GetSafeInput* 作用:在控制台中安全的读入一个数值 ------ 整型或浮点型* * 方法:* 1,用 try ... catch ... (会损失效率,最好不要用)* 2,用正则表达式	* * 方法2--说明:* 阻塞的方式,用Scanner从控制台安全的读入一个数* * 创建时间:2012-8-6 15:20* * 修改时间:2012-8-6 16:31 * 			说明: 添加:public static int getInt()* 				    添加:public static int getDouble()* 				    其他BUG修正*          2012-8-14 19:21* 			说明: 添加 getString()方法;* 				    将类名由GetSafeNumber改为GetSafeInput*          2012-8-27 12:32*          说明: 对正则表达式进行修改,去除负号的异常错误* * * @author 常维军**/
public class GetSafeInput
{/*** 阻塞式的从控制台读入一个安全的整数* 说明:显式使用Scanner对象* @param sc Scanner对象* @return 如果是整数则返回,如果不是整数继续读取,知道读入一个整数结束*/public static int getInt(Scanner sc){String inputs = sc.next();while(!isInteger(inputs)) {System.out.println("格式不正确,请重新输入");inputs = sc.next();}return Integer.valueOf(inputs);}/*** 阻塞式的从控制台读入一个安全的整数* 说明:隐式使用Scanner对象* @return 如果是整数则返回,如果不是整数继续读取,知道读入一个整数结束*/public static int getInt(){Scanner sc = new Scanner(System.in);String inputs = sc.next();while(!isInteger(inputs)) {System.out.println("格式不正确,请重新输入");inputs = sc.next();}return Integer.valueOf(inputs);}/*** 阻塞式的从控制台读入一个安全的浮点数* 说明:显式使用Scanner对象* @param sc Scanner对象* @return 如果是浮点数则返回,如果不是浮点数继续读取,知道读入一个正确的浮点数结束*/public static double getDouble(Scanner sc){String inputs = sc.next();while(!isDouble(inputs)) {System.out.println("格式不正确,请重新输入");inputs = sc.next();}return Double.valueOf(inputs);}/*** 阻塞式的从控制台读入一个安全的浮点数* 说明:隐式使用Scanner对象* @return 如果是浮点数则返回,如果不是浮点数继续读取,知道读入一个正确的浮点数结束*/public static double getDouble(){Scanner sc = new Scanner(System.in);String inputs = sc.next();while(!isDouble(inputs)) {System.out.println("格式不正确,请重新输入");inputs = sc.next();}return Double.valueOf(inputs);}/*** 判断是否是浮点数* 方法:利用正则表达式* @param s 需要判断的字符串* @return 是浮点数返回真,否则返回假*/public static boolean isDouble(String s){Pattern pattern = Pattern.compile("(\\-?)[0-9]+(\\.?)[0-9]*");if(pattern.matcher(s).matches()) {return true;}return false;}/*** 判断是否是整数* 方法:利用正则表达式* @param s 需要判断的字符串* @return 是整数返回真,否则返回假*/public static boolean isInteger(String s){Pattern pattern = Pattern.compile("(\\-?)[0-9]+");if(pattern.matcher(s).matches()) {return true;}return false;}/*** 隐式使用Scanner对象,从控制台读入字符* 添加日期:2012-8-14* @return 从控制台获取的字符*/public static String getString() {String inputString = null;Scanner scanner = new Scanner(System.in);inputString = scanner.next();return inputString;}/*** 显式使用Scanner对象,从控制台读入字符* 添加日期:2012-8-14* @return 从控制台获取的字符*/public static String getString(Scanner sc) {String inputString = null;inputString = sc.next();return inputString;}
}


转载于:https://www.cnblogs.com/wjchang/archive/2012/08/15/3671577.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于子网的网络地址和广播地址的计算问题的方法

关于子网的网络地址和广播地址的计算问题的方法 前言 近期在备考网络管理员考试,发现之前学习的知识有些遗忘,更新一下自己的博客记录一下学习的过程,今天先写一个小问题的计算方法,希望可以对大家有所帮助。 一、题目&#xf…

cdgb调试linux崩溃程序

直接上原图: 使用命令:cgdb test test.core.2235 安装cgdb程序步骤: 1:wget http://cgdb.me/files/cgdb-0.7.1.tar.gz(网络会受到影响) 2:解压.tar.gz文件 3:./configure --prefix/usr/local之后会提示 error: CGDB requires curses.h or ncurses/cu…

关于计算机网络中超网聚合问题的计算

关于计算机网络中超网聚合问题的计算 近期备战网络管理员考试,遇到了一类的超网聚合问题,觉得有点意思,写一下解题步骤。 题目 把4个网络133.24.12.0/24,133.24.13.0/24,133.24.14.0/24和133.24.15.0/24汇聚成一个超…

博客

http://cocoalit.com/index?cat46

软考网络管理员存储容量计算相关问题

软考网络管理员存储容量计算相关问题 题目: 内存按字节编址,用存储容量为8K * 8比特的存储器芯片构成地址编号7000H至EFFFH的内存空间,至少需要多少片内存? 解题过程: 首先求解总体地址容量: 总体容量E…

hMailServer 邮件系统安装配置篇

此篇进入正题,详细的说一下安装和配置过程。得先说一下,hMailServer是真正的邮件服务端,而Roundcube Webmail仅仅是为hMailServer提供Webmail应用的,可以让你通过Web方式收发邮件,如果你不用Web方式收发邮件&#xff0…

linux下生成coredump文件

1产生core文件方法 产生coredump的条件,首先需要确认当前会话的ulimit –c,若为0,则不会产生对应的coredump,需要进行修改和设置。 ulimit -c unlimited (可以产生coredump且不受大小限制),这种设置仅对当前生效&…

关于选择排序的优化——同时找出最小值与最大值

关于选择排序的优化——同时找出最小值与最大值 近期在学习排序算法,第一种方法就是选择排序。首先选择排序是一种不稳定的算法,其思想是通过遍历数组,找出最小值(最大值)的位置,放到已排序序列的启示&…

《几何与代数导引》例2.9

求以直线$xyz$为轴,过直线$2x3y-5z$的圆锥面方程.解:两条直线显然相交于原点.设圆锥面上的任意一点为$(x,y,z)$.我们知道直线$2x3y-5z$的方向向量为$(15,10,-6)$.则直线$xyz$的方向向量为$(1,1,1)$.我们知道\begin{equation}\cos \langle (1,1,1), (15,1…

std::make_unique和 std::make_shared区别

区别1:分配除的指针,前者是不能赋值,只能move,后者可以赋值 区别2:前者使用智能指针数组,后者不行(因为后者分配出来的指针具有单一性) #include #include class A { public: A() { std::c…

win8学习--------File

//创建文件 using namespace Windows::Storage; MainPage^ rootPage;rootPage MainPage::Current; create_task(KnownFolders::DocumentsLibrary->CreateFileAsync(rootPage->Filename, CreationCollisionOption::ReplaceExisting)).then([this](StorageFile^ file){ro…

centos下升级g++版本

转载请注明文章出处:https://juejin.im/post/5d0ef5376fb9a07ef63fe74e CentOS 7官方源带的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c14。要编译c14及以上项目,必须要升级现有版本或者安装高版本的gcc。(yu…

HDOJ---2546 饭卡[DP01背包问题]

饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4160 Accepted Submission(s): 1410 Problem Description电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之…

c++守护进程

#include #include <boost/process.hpp> #include int main(int argc, char* argv[]) { //此进程一定要防止多开 std::string exe_name(“C:\Users\yinpinghua\source\repos\ConsoleApplication2\x64\Debug\ConsoleApplication2.exe”); //c17语法 if (!std::filesy…

八皇后问题 递归求解法

#include <iostream> #include <fstream> #include <string.h>/** 八皇后问题递归方法实现 */ using namespace std;ofstream file;//用以计数计算结果的数目 int count 1; /** 打印的棋盘其中打印1的位置是皇后的位置&#xff0c;0空位。 这里因为在控制台…

Hadoop入门-单机伪分布式配置

为了配置的的方便建议先提升你的登录用户权限&#xff0c;本配置中凡是要在终端中输入的命令都用红色字体&#xff0c;需注意对应的目录用了色字体标出。 启用超级用户 sudo passwd root&#xff08;然后输入你的超级用户密码&#xff09;以后在终端中输入su&#xff0c;再输入…

nginx 监听同一端口

#user nobody; worker_processes 1; //主从进程 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-st…

squid代理服务器在企业网中的应用

一&#xff0c;squid服务器概述 Squid是一种在Linux系统下使用的优秀的代理服务器软件。 squid不仅可用在Linux系统上&#xff0c;还可以用在AIX、Digital Unix、FreeBSD、HP-UX、Irix、NetBSD、Nextstep、SCO和Solaris等系统上。 Squid与Linux下其它的代理软件如Apache、Socks…

判断linux进程是否存在

#include #include #include int main() { FILE* fp; std::string buffer; fp popen(“ps -ef|grep 进程名| grep -v grep |wc -l”, “r”); //1&#xff1a;存在 &#xff1a;不存在 fread(&buffer[0], 1,1, fp); std::cout << buffer << std::endl; pclo…

MPLS ×××配置

MPLS 配置以下面拓扑为例配置MPLS 拓扑说明&#xff1a;R1&#xff0c;R2、R3路由器上分别配置Loopback1 接口&#xff0c;IP地址分别为1.1.1.1&#xff0c;2.2.2.2 3.3.3.3&#xff1b;并配置OSPF&#xff0c;让MPLS区域内的地址可以进行标签交换1、在MPLS区域配置标签交换R1&…