注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

山林客

简单不一定幸福,但幸福其实可以很简单。

 
 
 

日志

 
 
关于我

2004年毕业于中山大学,毕业后专注于网站开发和网络工程技术。先后取得SCWCD、CCNP认证,对Asp/Java有丰富的开发经验,对网络工程也有较深的研究。真诚欢迎大家多多指教、多多指点、多多指正,共同分享IT道路和人生道路上的喜怒哀乐。

checking the user's input  

2006-10-15 14:42:59|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
import java.io.StreamTokenizer;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
class FormattedInput {

/**
 * @param args
 */
private int ttype;
private StreamTokenizer tokenizer=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
private int readToken()
{

try
{
ttype=tokenizer.nextToken();
return ttype;

}
catch(IOException e)
{
e.printStackTrace();
System.exit(1);
}
return 0;
}
public int readInt() throws InvalidUserInputException
{

/*
 for(int i=0;i<5;i++)
{
if(readToken()==tokenizer.TT_NUMBER)
{
return (int)tokenizer.nval;
}
else
{
System.out.println("Incorrect input: "+tokenizer.sval+" Re-enter an integer");
continue;
}
}

System.out.println("Five failure reading an int value = "+ " -program terminated");
System.exit(1);
return 0;
*/
if(readToken()!=tokenizer.TT_NUMBER)
{
throw new InvalidUserInputException(" readInt() failed. "+"Input data not numeric");
}
// because the nval in the tokenizer is a double ,we need to transelate the Integer.MAX_VALUE into type double first
if(tokenizer.nval>(double)Integer.MAX_VALUE||tokenizer.nval<(double)Integer.MIN_VALUE)
{
throw new InvalidUserInputException(" readInt() failed. Input outside range of type int");
}
//if the value read in =20.3 ,then (int)tokenizer.value=20,
//but the value stay in the tokenizer is 20.3
//that is to say the user doesn't  input an integer
if(tokenizer.nval!=(double)(int)tokenizer.nval)
{
throw new InvalidUserInputException(" readInt() failed. Input not an integer");
}
return (int) tokenizer.nval;
}

public double readDouble() throws InvalidUserInputException
{
if(readToken()!=tokenizer.TT_NUMBER)
{
throw new InvalidUserInputException(" readDouble() failed. Input data not numeric");
}
return tokenizer.nval;
}
public float readFloat() throws InvalidUserInputException
{
if(readToken()!=tokenizer.TT_NUMBER)
{
throw new InvalidUserInputException(" readFloat() failed. Input data not numeric");
}
return (float)tokenizer.nval;
}
public String readString() throws InvalidUserInputException
{
if(readToken()==tokenizer.TT_WORD||ttype=='\"'||ttype=='\'')
{
return tokenizer.sval;
}
else
{
throw new InvalidUserInputException("read String() failed.Input data is not a string");
}
}

}

class InvalidUserInputException extend* **ception
{

public InvalidUserInputException()
{

}
public InvalidUserInputException(String message)
{
super(message);
}
}

public class TestFormattedInput {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
FormattedInput kb=new FormattedInput();
for(int i=0;i<5;i++)
{
try
{
System.out.print("Enteger an integer: ");
System.out.println("Integer read: "+kb.readInt());
System.out.print("Enteger a double: ");
System.out.println("Double read: "+kb.readDouble());
System.out.print("Enteger a Float: ");
System.out.println("Float read: "+kb.readFloat());
System.out.print("Enteger a string: ");
System.out.println("String read: "+kb.readString());
}
catch(InvalidUserInputException e)
{
System.out.println("InvalidUserInputException thrown.\n"+e.getMessage());
}

}
}

}
  评论这张
 
阅读(206)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018