怎么样在java里实现能在DOS里使用自己命名的命令? 大家好,我是java初学者,遇到了个难题,谢谢大家帮下。问题如下:要用java编写一个基于命令行交互方式的应用程序,系统启动后,显示输入提示符“$”,然后用户可以用命令进行交互,约定系统支持几个交互命令,如 $ register [username][password] ,$ add [参数1][参数2][...]想问,怎么样在java里实现能在DOS里使用上面的这些命令?谢谢大家, 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 while(true){ //TODO:} 给你一个我自己的实现:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.util.StringTokenizer;/** * @author Administrator * */public class CommandShell { private static final String PREFIX = "$"; private static final String REGISTER= "register"; private static final String ADD = "add"; private static final String QUIT = "quit"; private PrintWriter pw = null; /** * start interview * */ public void start() throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; //for for(;;){ pw.print(PREFIX); pw.flush(); String input = br.readLine(); st = new StringTokenizer(input); String cmd = st.nextToken(); if(cmd.equalsIgnoreCase(REGISTER)){ //get username if(!st.hasMoreTokens()){ help(); continue; } String username = st.nextToken(); if(!assertNotNull(username)){ help(); continue; } // get password if(!st.hasMoreTokens()){ help(); continue; } String password = st.nextToken(); if(!assertNotNull(password)){ help(); continue; } doSomething(username,password); }else if(cmd.equalsIgnoreCase(ADD)){ if(!st.hasMoreTokens()){ help(); continue; } while(st.hasMoreTokens()){ String args = st.nextToken(); doOtherThing(args); } }else if(cmd.equalsIgnoreCase(QUIT)){ quit(); break; }else{ help(); } } //read the input //parse } private void doOtherThing(String args) { // TODO Auto-generated method stub pw.println("args:" + args); } private void doSomething(String username, String password) { // TODO Auto-generated method stub pw.println("register:" + "username:" + username + ";password" + password ); pw.flush(); } public void quit() { pw.println("bye"); pw.flush(); pw.close(); } public void help(){ pw.println("use- register [username] [password]"); pw.println("use- add [arg1] [arg2] [arg3] [arg4] ..."); pw.println("use- quit"); pw.flush(); } public CommandShell(){ pw = new PrintWriter(System.out); } public boolean assertNotNull(Object obj){ if(obj instanceof String){ String s = (String)obj; return s!=null && s.trim().length()>0; } return obj!=null; } /** * @param args */ public static void main(String[] args) { try { new CommandShell().start(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } }} 关于byte问题。。。 求解-GUI布局问题(菜鸟级) 我快崩溃了···网络传输的JB问题· 求修改一段语句 为什么java里的main在类里啊? 请教高手一个打印结果的问题,百思不得其解 一个关于Date的问题 蛋疼的一道java题 如何得到客户端请求的网址,急!!!!! 一个很简单的输出语句,但是结果不太明白 北京地区求购java 2图形设计:swing 帮忙解释一下这种声明成员的方式
//TODO:
}
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;/**
* @author Administrator
*
*/
public class CommandShell {
private static final String PREFIX = "$";
private static final String REGISTER= "register";
private static final String ADD = "add";
private static final String QUIT = "quit";
private PrintWriter pw = null;
/**
* start interview
*
*/
public void start() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
//for
for(;;){
pw.print(PREFIX);
pw.flush();
String input = br.readLine();
st = new StringTokenizer(input);
String cmd = st.nextToken();
if(cmd.equalsIgnoreCase(REGISTER)){
//get username
if(!st.hasMoreTokens()){
help();
continue;
}
String username = st.nextToken();
if(!assertNotNull(username)){
help();
continue;
}
// get password
if(!st.hasMoreTokens()){
help();
continue;
}
String password = st.nextToken();
if(!assertNotNull(password)){
help();
continue;
}
doSomething(username,password);
}else if(cmd.equalsIgnoreCase(ADD)){
if(!st.hasMoreTokens()){
help();
continue;
}
while(st.hasMoreTokens()){
String args = st.nextToken();
doOtherThing(args);
}
}else if(cmd.equalsIgnoreCase(QUIT)){
quit();
break;
}else{
help();
}
}
//read the input
//parse
}
private void doOtherThing(String args) {
// TODO Auto-generated method stub
pw.println("args:" + args);
} private void doSomething(String username, String password) {
// TODO Auto-generated method stub
pw.println("register:" + "username:" + username + ";password" + password );
pw.flush();
} public void quit() {
pw.println("bye");
pw.flush();
pw.close();
}
public void help(){
pw.println("use- register [username] [password]");
pw.println("use- add [arg1] [arg2] [arg3] [arg4] ...");
pw.println("use- quit");
pw.flush();
}
public CommandShell(){
pw = new PrintWriter(System.out);
}
public boolean assertNotNull(Object obj){
if(obj instanceof String){
String s = (String)obj;
return s!=null && s.trim().length()>0;
}
return obj!=null;
}
/**
* @param args
*/
public static void main(String[] args) {
try {
new CommandShell().start();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}}