Создание командной строки в Java: Справка для начинающих - PullRequest
2 голосов
/ 24 января 2011

Три вопроса, которые я не могу понять.

1) Я хотел бы создать новый процесс с использованием processbuilder, чтобы он выполнял cat C: \ xxx \ xxx.java для запуска файла Java, но я не могу реализовать это.

2) Я получаю ошибки в моем массиве при попытке компиляции

3) Я не могу найти чистый экран или способ закрыть окно, когда набираю «очистить» и «выйти» соответственно. system.exit (O), кажется, только закрывает виртуальную машину и фактически не закрывает окно.

Вот мой код, извините за то, что я отстой, но мне нужно это сделать, и мне не с кем спросить!

import java.io.*;

public class SimpleShell
{

    public class JavaStringHistory
        {
            private String[] history = new String[4];
        }

    public static void main(String[] args) throws
            java.io.IOException {

        String commandLine;
        BufferedReader console = new BufferedReader
            (new InputStreamReader(System.in));



            //Break with Ctrl+C
            while (true) {
            //read the command
            System.out.print("shell>");
            commandLine = console.readLine();

            //if just a return, loop
            if (commandLine.equals(""))
            continue;
            //history
            if(commandLine.equals('*'))
            {
              //new class HistoryStringArray();
             // {
               //   history[4] = history[3]
                //  history[3] = history[2]
                //  history[2] = history[1]
                //  history[1] = history[0]
                //  history[0] = commandLine
                }
            //help command
            if (commandLine.equals("help"))
            {
                System.out.println();
                System.out.println();
                System.out.println("Welcome to the shell");
                System.out.println("Written by: Brett Salmiery");
                System.out.println("CIS 390   -  Dr. Guzide");
                System.out.println("--------------------");
                System.out.println();
                System.out.println("Commands to use:");
                System.out.println("1) cat prog.java");
                System.out.println("2) exit");
                System.out.println("3) clear");
                System.out.println();
                System.out.println();
                System.out.println("---------------------");
                System.out.println();
            }

            if (commandLine.equals("clear"))
            {

               if ( int cls = 0; cls < 10; cls++ )
               {
                System.out.print();
               }


            }

            if (commandLine.endsWith(".java"))
            {
              if(commandLine.startsWith("cat"))
              {
                System.out.println("test");
                ProcessBuilder pb = new ProcessBuilder();
                //pb = new ProcessBuilder(commandLine);
              }

              else
              {
                  System.out.println("Incorrect Command");
              }
            }

            if (commandLine.equals("exit"))
            {

                System.out.println("...Terminating the Virtual Machine");
                System.out.println("...Done");
                System.out.println("Please Close manually with Options > Close");
                System.exit(0);
            }




        }
    }
}

1 Ответ

1 голос
/ 24 января 2011
           if ( int cls = 0; cls < 10; cls++ )

Я думаю, вы имели в виду for:)

Что касается механизма истории: у вас есть класс JavaStringHistory, который имеет только один закрытый член (неплохое начало), но нет методов для добавления записей в историю или извлечения записей из истории.Так что вы должны написать эти методы.(Вы также можете сделать элемент public и сохранить его непосредственно, как это пытается сделать ваш закомментированный код, но у вас уже есть класс для него, что может закончить абстракцию.)

И какдля ProcessBuilder я понятия не имею, как это работает.Я не уверен, чего бы вы хотели достичь, но вы могли бы использовать класс FileReader, чтобы прочитать указанный исходный файл и распечатать его на терминале.(Я мог бы также предложить попробовать что-то вроде String.split метода, чтобы отделить вашу входную строку и рассмотреть каждую часть в отдельности.)

Закрытие окна терминала?Err.Понятия не имею.Большинство профессионалов готовы признать, что иногда глупые вещи случаются в определенных условиях.

Надеюсь, это поможет вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...