Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

# args.length problem

Andrew Parker
Ranch Hand
Posts: 178
Hi,
I have the following class.
public class Hypotenuse
{
public double calcHypotenuse(double sideA, double sideB)
{
return (Math.sqrt(Math.pow (sideA, 2) + Math.pow (sideB, 2)));
}
public static void main (String args[])
{
Hypotenuse hypot;
double sideA, sideB, sideC;
if (args.length < 2) { //Don't understand why it will print out the error message as I pass args[0] and args[1] only.
System.err.println(
"Usage: java Hypotenuse <side a> <side b>");
System.exit(1);
}
sideA = Double.valueOf(args[0]).doubleValue(); //Will this assignment create a double value for sideA?
sideB = Double.valueOf(args[1]).doubleValue();
hypot = new Hypotenuse();
sideC = hypot.calcHypotenuse(sideA, sideB);
System.out.println(
"Given a triangle with two sides: " + sideA +
" and " + sideB + ", the longest side is: " + sideC);
//Why don't this result print out?
}
}

Thanks for help.
Andrew

Chicken Farmer ()
Ranch Hand
Posts: 1932
Originally posted by Andrew Parker:

if (args.length < 2) { //Don't understand why it will print out the error message as I pass args[0] and args[1] only.
System.err.println(
"Usage: java Hypotenuse <side a> <side b>");
System.exit(1);
}

Not sure what you are asking here. What you have is that if someone runs java Hypotenuse, and either puts no arguments or 1 argument, that error prints out (this seems to be the desired effect). 2 or more arguments causes the program to continue as normal.

sideA = Double.valueOf(args[0]).doubleValue(); //Will this assignment create a double value for sideA?
sideB = Double.valueOf(args[1]).doubleValue();

Better way to do this would be to call Double.parseDouble() on the strings instead.
Jason

Marilyn de Queiroz
Sheriff
Posts: 9067
12

If I type
java Hypotenuse 3 4
It prints
Given a triangle with two sides: 3.0 and 4.0, the longest side is: 5.0

I guess I don't understand your question.

Andrew Parker
Ranch Hand
Posts: 178
I am sorry. I forgot to pass the numeric parameters.
Thanks for help.
Andrew