大家好,我是java初学者,遇到了个难题,谢谢大家帮下。问题如下:要用java编写一个基于命令行交互方式的应用程序,
系统启动后,显示输入提示符“$”,然后用户可以用命令进行交互,约定系统支持几个
交互命令,如 $ register [username][password] ,$ add [参数1][参数2][...]想问,怎么样在java里实现能在DOS里使用上面的这些命令?
谢谢大家,

解决方案 »

  1.   

    while(true){
        //TODO:
    }
      

  2.   

    给你一个我自己的实现: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();
    }
        }}