Использование аргументов командной строки для завершенной программы Ханой?

Я только что закончил свои программы Ханойских башен. Он работает безупречно, за исключением того, что теперь мне нужно как-то сделать так, чтобы моя программа могла читать аргументы командной строки (и выдавать те же результаты, что и в моей программе). Моя программа выполняет те же задачи, что и приведенные ниже, я просто не знаю, как сделать так, как показано ниже, поскольку я никогда не использовал аргументы командной строки.

В любом случае, разочарование для меня, некоторые примеры ввода должны выглядеть так:

java hanoi 3 6 решит головоломку 4 раза, для 3, 4, 5 и 6 дисков соответственно.
java hanoi 3 2 решит головоломку один раз, на 3 диска.
java hanoi dog 6 решит головоломку 4 раза, для 3, 4, 5 и 6 дисков соответственно.

Как я могу преобразовать мою программу, чтобы использовать аргументы командной строки, как это?

Код:

import java.util.Scanner;
import java.util.*;

public class hanoi {
    static int moves = 0;
    static boolean displayMoves = false;

    public static void main(String[] args) {
        System.out.print(" Enter the minimum number of Discs: ");
        Scanner minD = new Scanner(System.in);
      String height = minD.nextLine();
      System.out.println();
      char source = 'S', auxiliary = 'D', destination = 'A'; // 'Needles'

      System.out.print(" Enter the maximum number of Discs: ");
        Scanner maxD = new Scanner(System.in);
      int heightmx = maxD.nextInt();

//       if (heightmx.isEmpty()) {   //If not empty
//          // iMax = Integer.parseInt(heightmx);
//          int iMax = 3;
//          hanoi(iMax, source, destination, auxiliary);
//       }  
      System.out.println();


      int iHeight = 3; // Default is 3 
      if (!height.trim().isEmpty()) { // If not empty
      iHeight = Integer.parseInt(height); // Use that value

      if (iHeight > heightmx){
         hanoi(iHeight, source, destination, auxiliary);
      }

        System.out.print("Press 'v' or 'V' for a list of moves: ");
        Scanner show = new Scanner(System.in);
        String c = show.next();
        displayMoves = c.equalsIgnoreCase("v");   
      }

      for (int i = iHeight; i <= heightmx; i++) {     
           hanoi(i,source, destination, auxiliary);
         System.out.println(" Total Moves : " + moves);                    
      }
    }

    static void hanoi(int height,char source, char destination, char auxiliary) {
        if (height >= 1) {
            hanoi(height - 1, source, auxiliary, destination);
            if (displayMoves) {
                System.out.println(" Move disc from needle " + source + " to "
                        + destination);
            }
            moves++;
            hanoi(height - 1, auxiliary, destination, source);
        } 
    }
}

4 ответа

У вас есть строковые аргументы

public static void main(String[] args) {

Первая строка в массиве - это аргумент вашей первой строки, вторая строка - аргумент второй строки... Проверьте размер, проанализируйте, что вам нужно.

Привет холод.

Аргументы командной строки читаются в String[] args который передается вашему основному методу в качестве аргумента. Google нашел бы это быстрее.

public static void main(String[] args)

Эта подпись магического метода будет содержать любой String параметры вы передаете из командной строки.

так, например:

java myProg a b c

Буду иметь ab а также c как часть args массив, когда я запускаю свою программу. Это просто вопрос обработки аргументов, переданных из командной строки. Они будут там, если вы передадите их.

Аргументы командной строки передаются в ваш метод main(), поэтому они доступны в args как строки Просто проверь сколько их есть (args.length) и, если было предоставлено достаточное количество аргументов, преобразуйте их в числа так же, как сейчас. В противном случае выведите ошибку или использование isntructions и выйдите.

Другие вопросы по тегам