.. _parameters: .. raw:: html .. |--| unicode:: U+2013 .. en dash .. |---| unicode:: U+2014 .. em dash, trimming surrounding whitespace :trim: .. This file is part of the OpenDSA eTextbook project. See .. http://algoviz.org/OpenDSA for more details. .. Copyright (c) 2012-2016 by the OpenDSA Project Contributors, and .. distributed under an MIT open source license. .. avmetadata:: :author: Jordan Sablan :requires: Commmand line :satisfies: Command line parameters :topic: ============================================== Parsing Command Line Parameters In Your Progam ============================================== Parameters In Programming ------------------------- Alright I get the idea of parameters for a function, that's easy enough. But how does a Program itself have parameters? This comes in the Main function that every Java program has. Consider this the "launch" function. Usually the "main" function is named Main and takes an array of strings as its parameter (see below). :: public static void main(String[] args) So when you launch the command from the terminal it passes in an array of all the additional information (and it usually trims white space). So if I run .. odsafig:: Images/parameterexample.png :width: 500 :align: center :capalign: justify :figwidth: 90% :alt: ls with paramaters Then args is an array containing:: {"-l", "file.txt"} \*Authors Note: This is true for Java, but is a little different for C or C++. In C, the first parameter that you are given is always the command name so your array in C would be:: {"ls", "-l", "file.txt"} Java however, removes the command name and only provides parameters. I have created a main function skeleton for you to use in your projects. It is set up simply and makes use of switch cases. You can |external_link1|. Let's see how it works. .. |external_link1| raw:: html download it .. codeinclude:: Java/Tutorials/MainParameters.java We have our main function take an array of Strings (named args). If that array is empty then we may or may not want to exit as we have no parameters. It will then progress into a while loop that iterates through all parameters. The syntax of this loop is useful as it does not lock parameters into any fixed order. You can invoke them anyway you wish. The switch case statement allows you to easily write for any parameter and add a case for unrecognized parameters by using the default case for any non matching parameters. In this example I choose to exit after printing the unrecognized string. In the future you may wish to change this to something else. You can learn more about |external_link2|. It is also important to note that this function will possibly throw an exception or behave in an unexpected way if you use "-f" but do not give a file name. For example you call the program with {"-f", "-v"}, this will set the filename to -v. Or if you call the program with {"-f"}, you will get an exception for trying to access outside the array bounds. You can prevent this by using a try catch, but for simplicity's sake I chose to make example very simple. Once you have your parameters set, you can call the appropriate methods to launch your program. There you go simple command line parsing! .. |external_link2| raw:: html switch statements