ENGLISH 意见建议 网站地图 网站帮助
广泛智力汇聚   高效成果传播   先进机制培育
联盟首页  |  协同开发  |  开放源码库  |  安全告警  |  开源导航  |  文档中心  |  服务支持  |  共创论坛  |  关于联盟


注册会员 网站帮助
    您的位置 »
    今天是: 2010年11月22日    
项目搜索

完全匹配   
开源软件
软件分类表
新发布软件
其它网站镜像
代码片断
协同开发
文档
论坛
寻求协助
热点项目
站点状态
编译工厂

联系我们
关于联盟

代码片段库:
查看代码片段

浏览 | 提交新的代码片段 | 创建代码包

readfromcmd

类型:
Full Script
类别:
Other
许可证:
GNU General Public License
语言:
Java
 
描述:
02

Java的新手经常问,“我怎样才能从命令行读取一个整数呢?”他们遇到的问题是双重性的。第一个问题是Java 把命令行当成是字符输入的地方,比方“1”而不是1.第二个方面是从命令行读取数据需要一个非常陡峭的学习曲线。幸运的是,使用一个简单的Listener系统,学习曲线的坡度被降低了而程序员可以关注于真正的问题,也就是如何把输入的字符串转换成数字。

该代码片段的版本系列:

片段ID 下载版本 提交时间 提交人 删除
45560.12002-04-23 12:11admin

点击"下载版本"来下载该代码片段.


最新版本的代码片段: 0.1


package com.generationjava.io;

/**
* 监听一个命令行而且在命令被输入的
*时候收到通知。从cmdEntered 返回false值将
*将阻止被监听的命令行。
*/
public interface CommandLineListener {
public boolean cmdEntered(String cmd);
} 
package com.generationjava.io;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.Reader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
* 从命令行读取命令
* 这使得处理用户命令的程序可以
*与读取命令的部分独立开来
*/
public class CommandLine {
private BufferedReader br = null;
private CommandLineListener myListener = null;

public CommandLine(InputStream is, CommandLineListener cll) {
this( new InputStreamReader(is), cll);
}

public CommandLine(Reader rdr, CommandLineListener cll) {
br = new BufferedReader(rdr);
myListener = cll;
}

public void startReading() throws IOException {
String cmd = null;
boolean moreCommands = true;
while(moreCommands) {
cmd = br.readLine();
moreCommands = myListener.cmdEntered(cmd);
}
}
} 

使用这个系统是简单的。只需要实现Listener类然后开始一个命令行对象。例如:


public class TestCommandLine implements CommandLineListener {

static public void main(String[] args) {
CommandLineListener cll = new TestCommandLine();
CommandLine cl = new CommandLine( System.in, cll );
cl.startReading();
}

public boolean cmdEntered(String cmd) {
System.out.println("CMD["+cmd+"] was entered.");
return true;
}
} 


		

提交新版本

如果您修改了一个代码片段并且觉得很应该让别人共享,您可以把这作为这个代码片段的最新版本提交上来.


联盟团体会员
合作伙伴
© 共创软件联盟 版权所有
联盟服务条款 | 联盟隐私权规则 | 联系我们
电话: (8610)68313388-5949 | 传真: (8610)88377936
京ICP备05056057号