class character1{
public static void main (String args[]){
float a,b;
a=Integer.parseInt (args[0]);
b=(float)Math.acos(a*(180/3.14));
System.out.println (b);
}
}
the above program isn't working when entering angle other than 1 , why ?
class character1{
public static void main (String args[]){
float a,b;
a=Integer.parseInt (args[0]);
b=(float)Math.acos(a*(180/3.14));
System.out.println (b);
}
}
the above program isn't working when entering angle other than 1 , why ?
Check the arguments you passing to the acos(double) method.
If the absolute value is > 1 or NaN, it will return NaN.
See the API doc of Math class.
Add this to your code to see what you are passing to acos():
System.out.println("acos arg=" + a*(180/3.14)); // show the arg
adding the argument giving me following output when entering arccos = 2
acos arg=114.64968152866241
is there something wrong in a program ??
I was trying to show you that your arg to acos() was > 1 which will return a NaN value.
For example this code passes args to acos from .1 to 1.1:
for(double a = .1; a < 1.1; a+= .1) {
double b = Math.acos(a);
System.out.println ("a=" + a + ", b=" + b);
}
/*
a=0.1, b=1.4706289056333368
a=0.2, b=1.369438406004566
a=0.30000000000000004, b=1.266103672779499
a=0.4, b=1.1592794807274085
a=0.5, b=1.0471975511965979
a=0.6, b=0.9272952180016123
a=0.7, b=0.7953988301841436
a=0.7999999999999999, b=0.6435011087932845
a=0.8999999999999999, b=0.45102681179626264
a=0.9999999999999999, b=1.4901161193847656E-8
a=1.0999999999999999, b=NaN
*/
Hey i don't understand what you are trying to say ??
why the value becomes Nan at 1.0999999 and why yu didn't multiply it by 3.14/180 ?
I guess you need to read the API doc for the acos method.
Hello
The cos-function y = cos(x) gives a value y which is from [-1 ... +1]. Its parameter x must be radians, that is for example -2*pi ... +2*pi, also values > 2*pi are allowed.
Therefore the parameter y of the restricted inverse function x = acos(y) must always be from [-1 ... +1]. x is then from restricted domain [pi .. 0] because cos is periodic.
As for your program:
>> a=Integer.parseInt (args[0]);
a can be a parameter for acos function if a is from [-1..+1]. If not, NaN would be the result.
>> b=(float)Math.acos(a*(180/3.14));
should be: b = Math.acos(a);
The result b is radians. You can convert it into degrees: b_degrees = b * 180 / pi or b_degrees = Math.acos(a) * 180 / pi, where pi = 3.14159265358979 or 4*atan(1).
-- tesu
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.