public class TestSample {
public static void main(String[] args) {
System.out.print(\"Hi, \");
System.out.print(args[0]);
System.out.prin
1. ArrayIndexOutOfBoundsException: 0
It was thrown because args.length == 0
therefore args[0]
is outside the arrays range of valid indices (learn more about arrays).
Add a check for args.length>0
to fix it.
public class TestSample {
public static void main(String[] args) {
System.out.print("Hi, ");
System.out.print(args.length>0 ? args[0] : " I don't know who you are");
System.out.println(". How are you?");
}
}
2. Command line args as int
You will have to parse the arguments to int[]
yourself as the command line arguments are passed only as a String[]
. To do this, use Integer.parseInt() but you will need exception handling to make sure the parsing went OK (learn more about exceptions). Ashkan's answer shows you how to do this.
with regards to second part of your question:
from http://download.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html :
Parsing Numeric Command-Line Arguments
If an application needs to support a numeric command-line argument, it must convert a String argument that represents a number, such as "34", to a numeric value. Here is a code snippet that converts a command-line argument to an int:
int firstArg; if (args.length > 0) { try { firstArg = Integer.parseInt(args[0]); } catch (NumberFormatException e) { System.err.println("Argument must be an integer"); System.exit(1); } }
public static void main(String[] args)
and not public static void main(int[] args)
if you want ints, you'll need to parse them from the arguments.